Descrevendo a saída do comando 'strace'

4

Eu tenho o processo php que não pode terminar por mais de dois dias.

root     26511  0.0  1.6 407788 27684 ?        Ss   Jul09   0:08 /usr/bin/php action.php

Esta é a saída do comando 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

Você pode me explicar o significado dessa saída? Ou talvez eu possa obter mais informações sobre o processo de pilha usando algum outro comando.

Versão do PHP: PHP 5.4.30 Lançamento do CentOS 6.5

    
por ibedelovski 11.07.2014 / 10:45

1 resposta

10

O comando strace lista as chamadas do sistema que o aplicativo faz enquanto está em execução.

Se você não é desenvolvedor: a Seção 2 do manual do sistema documenta chamadas do sistema ajudando você a entender o que está acontecendo.

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.

Os eventos solicitados na chamada do sistema poll são todos relacionados no descritor de arquivos 7, novamente na página de manual os eventos solicitados pela sua aplicação são:

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).

As linhas de strace mostram que a ação de pesquisa expira, o descritor de arquivo (# 7) não fica pronto para leitura de E / S.

A chamada do sistema clock_gettime() - clock and time functions indica algo como esperar um pouco e depois tentar novamente.

Para descobrir qual arquivo está causando o tempo limite, deve haver um link simbólico com o número 7, o inteiro representando o arquivo em /proc/<PID>/fd/7

    
por 11.07.2014 / 11:13