2010-02-03 23 views
5

在Ubuntu 8.04上使用Apache 2.2和mod_perl我在服务器上有几个应用程序。在预分配模式下使用Apache。通常事情运行良好,但偶尔我会看到一个使用100%CPU的Apache进程。如何追踪mod_perl中的CPU密集型请求?

有几个网站在服务器上有自己的虚拟主机,有 是和通过Apache运行的SVN服务器。

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

回答

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和后来的。)你可以使用一些适当的手段从这些发行版安装软件包,从CPAN安装,或者只是升级;-)

+0

一旦我知道哪些请求导致了问题,我可以尝试对其进行配置,但将探查器添加到所有请求听起来像一个糟糕的主意 - 至少一见钟情 – szabgab 2010-02-05 13:46:02

0

如果你有一个大subversion版本库和基于路径的授权在你的apache配置中启用,你将看到一些长期运行的高CPU apache任务。你也可能会抱怨颠覆用户有关缓慢的提交和更新,以及503错误和颠覆抱怨截断的SSL响应。如果是这样的话,我会让颠覆成为我的主要嫌疑犯。

0

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

相关问题