У меня есть процесс php, который не мог завершиться более 2 дней.
root 26511 0.0 1.6 407788 27684 ? Ss Jul09 0:08 /usr/bin/php action.php
Это результат работы команды strace:
poll([{fd=7, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 1000) = 0 (Timeout)
poll([{fd=7, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout)
clock_gettime(CLOCK_MONOTONIC, {5533745, 664851437}) = 0
clock_gettime(CLOCK_MONOTONIC, {5533745, 664940247}) = 0
clock_gettime(CLOCK_MONOTONIC, {5533745, 665211013}) = 0
poll([{fd=7, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 1000) = 0 (Timeout)
poll([{fd=7, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout)
clock_gettime(CLOCK_MONOTONIC, {5533746, 666594416}) = 0
clock_gettime(CLOCK_MONOTONIC, {5533746, 666684149}) = 0
clock_gettime(CLOCK_MONOTONIC, {5533746, 666772214}) = 0
poll([{fd=7, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 1000) = 0 (Timeout)
poll([{fd=7, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout)
clock_gettime(CLOCK_MONOTONIC, {5533747, 668356163}) = 0
clock_gettime(CLOCK_MONOTONIC, {5533747, 668447565}) = 0
clock_gettime(CLOCK_MONOTONIC, {5533747, 668538577}) = 0
Вы можете мне объяснить, что означает этот вывод? Или, может быть, я смогу получить больше информации о процессе стека с помощью другой команды.
Версия PHP: PHP 5.4.30 CentOS версии 6.5
В strace
Команда перечисляет системные вызовы приложения во время его работы.
Если вы не разработчик: в разделе 2 системного руководства описаны системные вызовы, которые помогут вам понять, что происходит.
man 2 poll
DESCRIPTION
poll() performs a similar task to select(2): it waits for one of a set
of file descriptors to become ready to perform I/O.
События, запрошенные в системном вызове опроса, все считываются связанными с файловым дескриптором 7, опять же из справочной страницы события, которые запрашивает ваше приложение, следующие:
POLLIN There is data to read.
POLLPRI There is urgent data to read.
POLLRDNORM Equivalent to POLLIN.
POLLRDBAND Priority band data can be read (generally unused on Linux).
Строки strace показывают, что время опроса истекло, дескриптор файла (# 7) не готов к чтению ввода-вывода.
Системный вызов clock_gettime() - clock and time functions
укажите что-то вроде подождите немного и попробуйте еще раз.
Чтобы узнать, какой файл вызывает тайм-аут, должна быть символическая ссылка с числом 7, целым числом, представляющим файл в /proc/<PID>/fd/7