如何在mod_perl中跟踪CPU密集型请求?

时间:2010-02-03 17:47:12

标签: perl apache mod-perl

在Ubuntu 8.04上使用Apache 2.2和mod_perl我在服务器上有几个应用程序。在pre-forking模式下使用Apache。通常情况下运行良好,但偶尔我会看到一个Apache进程使用100%的CPU。

服务器上有几个网站都有自己的VirtualHosts,而且有 是和SVN服务器通过Apache运行。

如何跟踪哪个应用程序以及该应用程序中的哪些调用产生高负载?

3 个答案:

答案 0 :(得分:4)

Devel::NYTProf现在几乎是Perl的首要分析器,Devel::NYTProf::Apache可以轻松分析mod_perl应用程序。

有关图片的详细信息,请参阅Tim Bunce: NYTProf v2 – A major advance in perl profilers

不幸的是,Devel :: NYTProf没有预先打包在Ubuntu Hardy中。 (它预先打包在Jaunty,Karmic,Lucid和更高版本中。)你可以使用一些apt技巧来安装这些发行版的软件包,从CPAN安装,或者只是升级; - )

答案 1 :(得分:0)

如果您在apache配置中启用了大型subversion存储库和基于路径的授权,那么您将看到一些长期运行的高CPU apache任务。你可能也会有来自subversion用户的关于缓慢提交和更新的抱怨,以及503错误和subversion抱怨截断的SSL响应。如果是这种情况,我会颠覆我的主要嫌疑人。

答案 2 :(得分:0)

使用自定义日志格式或编写PerlLogHandler,记录请求信息以及PID和资源使用信息。例如,请参阅Randal的Web Techniques Column 48