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

Описание вывода команды `strace`

У меня есть процесс 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