Назад | Перейти на главную страницу

Состояние процесса Linux при ожидании ответа HTTP

Что происходит в Linux с состоянием процесса (curl, postman, mule, caml), когда он отправил HTTP-запрос и ожидает ответа HTTP? Как узнать, как долго процесс ожидает ответа?

После обновления вопроса мой комментарий -

Зависит от того, что именно сгенерировало этот запрос. Например, если вы разрабатываете на Angular или размещаете приложение Angular в Linux, любой HTTP-запрос является асинхронным и отображение данных может занять несколько секунд. Angular справляется с этим, давая обещания, а затем выполняя их при возврате данных. Royal PITA, с которой нужно иметь дело. В Java некоторые библиотеки HTTP-запросов являются синхронными, некоторые - асинхронными. PHP, cURL и т. Д. Все синхронны. Итак ... Это зависит?

По-прежнему применяется. Заголовки отправлены, но ожидают начала передачи данных? Ожидание заголовков? Половина данных отправлена, но есть временная пауза в передаче?

Тем не мение, curl сообщает как "спящий", не хотел писать больше кода и экспериментировать для других. Возможно, какой-нибудь метод соотнесения произвольных переключений контекста с прошедшим временем сработает?

С участием curl, и простой скрипт -

<?php
sleep(60);
print("done");
?>

а curl http://localhost/wait.php показывает в /proc/PID/status что он спит. Нет индикатора времени, который я вижу - вот результат, обратите внимание, что мне пришлось запустить завиток, щелкнуть, чтобы изменить фокус, и т. Д., Поэтому прошло больше нескольких секунд.

user@darkstar /proc/4816 $ cat status
Name:   curl
Umask:  0022
State:  S (sleeping)
Tgid:   4816
Ngid:   0
Pid:    4816
PPid:   4729
TracerPid:  0
Uid:    1000    1000    1000    1000
Gid:    1000    1000    1000    1000
FDSize: 256
Groups: 4 24 27 30 44 46 113 130 132 135 1000 
NStgid: 4816
NSpid:  4816
NSpgid: 4816
NSsid:  4729
VmPeak:   225592 kB
VmSize:   162176 kB
VmLck:         0 kB
VmPin:         0 kB
VmHWM:      5692 kB
VmRSS:      5616 kB
RssAnon:         800 kB
RssFile:        4816 kB
RssShmem:          0 kB
VmData:     9172 kB
VmStk:       136 kB
VmExe:       176 kB
VmLib:     10392 kB
VmPTE:       184 kB
VmPMD:        12 kB
VmSwap:        0 kB
HugetlbPages:          0 kB
Threads:    1
SigQ:   0/31484
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000001000
SigCgt: 0000000180000000
CapInh: 0000000000000000
CapPrm: 0000000000000000
CapEff: 0000000000000000
CapBnd: 0000003fffffffff
CapAmb: 0000000000000000
Seccomp:    0
Cpus_allowed:   ffff
Cpus_allowed_list:  0-15
Mems_allowed:   00000000,00000001
Mems_allowed_list:  0
voluntary_ctxt_switches:    33
nonvoluntary_ctxt_switches: 2

И (лучше) time запуск команды -

user@darkstar:~ $ /usr/bin/time -v curl http://localhost/wait.php
Done    Command being timed: "curl http://localhost/wait.php"
    User time (seconds): 0.00
    System time (seconds): 0.00
    Percent of CPU this job got: 0%
    Elapsed (wall clock) time (h:mm:ss or m:ss): 1:00.01
    Average shared text size (kbytes): 0
    Average unshared data size (kbytes): 0
    Average stack size (kbytes): 0
    Average total size (kbytes): 0
    Maximum resident set size (kbytes): 7596
    Average resident set size (kbytes): 0
    Major (requiring I/O) page faults: 0
    Minor (reclaiming a frame) page faults: 403
    Voluntary context switches: 63
    Involuntary context switches: 2
    Swaps: 0
    File system inputs: 0
    File system outputs: 0
    Socket messages sent: 0
    Socket messages received: 0
    Signals delivered: 0
    Page size (bytes): 4096
    Exit status: 0