Я пытаюсь выяснить, почему вращается «Затмение», поэтому я решил запустить «Стрейс».
Я нашел процесс затмения, используя:
$ ps ax | grep java
5546 ? Sl 19:04 /usr/bin/java ... [arguments omitted]
strace
для этого процесса, я вижу, что он ожидает другого процесса:
$ sudo strace -p 5546
Process 5546 attached - interrupt to quit
futex(0x7f6c416679d0, FUTEX_WAIT, 5547, NULL^C <unfinished ...>
Process 5546 detached
Интересно, что процесс 5547 не отображается в ps
(кто-нибудь может сказать мне, почему?), Но я могу это strace
. Он многократно выплевывает множество ошибок EAGAIN (со случайным успехом)
read(16, 0x7f6c41664d10, 16) = -1 EAGAIN (Resource temporarily unavailable)
recvfrom(15, 0x7f6c3815f2e4, 4096, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
clock_gettime(CLOCK_MONOTONIC, {67410, 357843264}) = 0
poll([{fd=16, events=POLLIN}, {fd=15, events=POLLIN}, {fd=68, events=POLLIN}, {fd=128, events=POLLIN}, {fd=69, events=POLLIN}], 5, 0) = 0 (Timeout)
read(16, 0x7f6c41664cb0, 16) = -1 EAGAIN (Resource temporarily unavailable)
recvfrom(15, 0x7f6c3815f2e4, 4096, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
...
Судя по выводу, похоже, что он опрашивает файловые дескрипторы 16, 15, 68, 128 и 69. В частности, ошибки EAGAIN
исходят от 15 и 6 fds, как видно из вызовов read(2)
и recvfrom(2)
.
Как я могу найти больше информации об этих FDS? Я попытался lsof -p 5547
но вывод не выводится. Я подозреваю, что это сокеты, которые открыты для какого-то веб-сайта, но почему он вращается в тесной петле с EAGAIN
озадачивает ...