我曾多次遇到过 Apache 服务器在处理编写不当的 PHP 页面请求时“堵塞”的情况。查看 HTTP 状态页面,所有服务器都处于“W”状态。虽然有时可以使用日志和一些运气猜测找到有问题的网站,但在运行大量网站的系统上,使用日志几乎不可能找到有问题的脚本。
那么,有没有办法找出给定的 apache 进程“现在”正在处理的请求?我查看了 /proc/ 目录,没有发现任何有用的东西。我想 strace 可能会有所帮助,但前提是你在请求开始之前就找到了它。
有任何想法吗?
顺便说一句:我熟悉“slowloris”DOS攻击,这不是我所谈论的。
答案1
打开ExtendedStatus
旗httpd.conf
。
您的服务器状态页面将列出正在提供的每个文件的 VHost 和 URI。
答案2
在 CentOS 上,你可以运行 /usr/local/apache/bin/apachectl fullstatus