ibe*_*ski 4 linux php debugging
我有 php 进程无法完成超过 2 天。
root 26511 0.0 1.6 407788 27684 ? Ss Jul09 0:08 /usr/bin/php action.php
Run Code Online (Sandbox Code Playgroud)
这是 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
Run Code Online (Sandbox Code Playgroud)
你能解释一下这个输出是什么意思吗?或者,也许我可以使用其他一些命令获取有关堆栈进程的更多信息。
PHP 版本:PHP 5.4.30 CentOS 6.5 版
HBr*_*ijn 10
该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.
Run Code Online (Sandbox Code Playgroud)
poll 系统调用中请求的事件都与文件描述符 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).
Run Code Online (Sandbox Code Playgroud)
strace 行显示轮询操作超时,文件描述符 (#7) 未准备好读取 IO。
系统调用clock_gettime() - clock and time functions
表示等待一段时间然后再试一次。
要找出导致超时的文件,应该有数字 7 的符号链接,代表文件的整数 /proc/<PID>/fd/7
归档时间: |
|
查看次数: |
9565 次 |
最近记录: |