【发布时间】:2011-01-12 17:43:21
【问题描述】:
在 Ubuntu 8.04 上使用 Apache 2.2 和 mod_perl 我在服务器上有几个应用程序。在预分叉模式下使用 Apache。通常事情运行良好,但偶尔我会看到一个 Apache 进程使用 100% 的 CPU。
服务器上有几个网站都有自己的虚拟主机,并且有 是和通过 Apache 运行的 SVN 服务器。
我如何追踪哪个应用程序以及该应用程序中的哪些调用产生了高负载?
【问题讨论】:
在 Ubuntu 8.04 上使用 Apache 2.2 和 mod_perl 我在服务器上有几个应用程序。在预分叉模式下使用 Apache。通常事情运行良好,但偶尔我会看到一个 Apache 进程使用 100% 的 CPU。
服务器上有几个网站都有自己的虚拟主机,并且有 是和通过 Apache 运行的 SVN 服务器。
我如何追踪哪个应用程序以及该应用程序中的哪些调用产生了高负载?
【问题讨论】:
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 安装,或者只是升级;-)
【讨论】:
如果您在 apache 配置中启用了大型 subversion 存储库和基于路径的授权,您将看到一些长时间运行、高 CPU 的 apache 任务。您可能还会收到来自 subversion 用户的关于缓慢提交和更新的抱怨,以及 503 错误和 subversion 抱怨截断 SSL 响应。如果是这样的话,我会把颠覆作为我的主要嫌疑人。
【讨论】:
使用自定义日志格式或编写记录请求信息以及 PID 和资源使用信息的 PerlLogHandler。例如,请参阅 Randal 的Web Techniques Column 48。
【讨论】: