我有一台 VPS Debian 服务器,安装了 Apache 2.4.10 mod-php。服务器正常启动,但一段时间后,www-data 进程之一的 CPU 占用率达到 100%,并且 Web 服务器不可用。
我尝试了strace
该过程并得到了以下几行的无限循环:
poll([{fd=93, events=POLLIN}], 1, 3000) = 1 ([{fd=93, revents=POLLHUP}])
read(93, "", 13160)
然后我尝试 lsof ant 得到了这个:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
apache2 1134 www-data 93r FIFO 0,8 0t0 3176528027 pipe
什么原因导致了这个问题?当我重新启动 apache 时,过了一段时间,我遇到了同样的问题。
答案1
服务器上的某些 PHP 脚本占用了所有 CPU 时间。可能您遇到了无限循环。信息表明strace
脚本正在轮询管道的某些文件描述符。也许该管道的另一端已关闭,而您的脚本仍在尝试从中读取某些内容(未处理的错误)。
如果您不知道服务器上有此类脚本,请检查是否有其他脚本可能已被某人“注入”到您的服务器。检查 Apache 日志以查看远程客户端打开了哪些文件。