![Apache 2 正在忙什么?](https://linux22.com/image/1279495/Apache%202%20%E6%AD%A3%E5%9C%A8%E5%BF%99%E4%BB%80%E4%B9%88%EF%BC%9F.png)
我在 Ubuntu 上使用 Apache 2.2.17 - Apache 似乎占用了 100% 的 CPU。我如何知道 Apache 忙于做什么导致 CPU 使用率如此之高?
我应该使用一些堆栈跟踪工具吗?或者也许有一些 Apache 插件可以转储其内部状态?
答案1
检查访问日志和错误日志文件(位置在“httpd.conf”文件中定义)是否存在大量活动(最新条目位于文件末尾 - 使用“tail -f access.log”实时观看)。
如果您的日志文件中没有显示任何活动,那么可能是某些代码陷入了无限循环。重新启动 Apache HTTPd 可以暂时修复该问题,但您肯定希望检查自定义代码(您使用的是 mod_perl2、CGI Perl、PHP 还是其他代码?),特别是在您认为此症状开始出现后修改/添加的代码。
“服务器状态”模块(应包含在默认构建中)也可能提供一些见解。
如果重新启动后活动率再次达到 100%,那么可能是因为 Apache HTTPd 加载了一些代码,导致出现了问题,或者是某个模块出现了问题。
您是否对配置做了任何复杂的操作?您使用的是 mod_perl2、CGI Perl、PHP 还是其他?您使用的是哪个版本的 Apache HTTPd?您在哪个操作系统上运行它(我假设是 Unix 或 Linux,因为这些操作系统更适合用作 Web 服务器,而且似乎也是大多数人的选择)?