我有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你能解释一下这个输出是什么意思吗?或者我可以使用其他命令获得更多关于堆栈进程的信息。
:PHP5.4.30 CentOS版本6.5
发布于 2014-07-11 09:13:57
strace命令列出了系统在运行时调用应用程序所做的事情。
如果您不是developer:系统手册文档的第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)没有准备好读取IO。
系统调用clock_gettime() - clock and time functions表示类似于等待一段时间,然后再试一次。
要找出导致超时的文件,应该使用数字7 (表示/proc/<PID>/fd/7文件的整数)的符号链接。
https://serverfault.com/questions/611841
复制相似问题