【问题标题】:How can I track down CPU intensive requests in mod_perl?如何在 mod_perl 中跟踪 CPU 密集型请求?
【发布时间】:2011-01-12 17:43:21
【问题描述】:

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

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

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

【问题讨论】:

    标签: perl apache mod-perl


    【解决方案1】:

    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 安装,或者只是升级;-)

    【讨论】:

    • 一旦我知道是哪个请求导致了问题,我就可以尝试分析它们,但是将分析器添加到所有请求听起来是个坏主意——至少乍一看是这样
    【解决方案2】:

    如果您在 apache 配置中启用了大型 subversion 存储库和基于路径的授权,您将看到一些长时间运行、高 CPU 的 apache 任务。您可能还会收到来自 subversion 用户的关于缓慢提交和更新的抱怨,以及 503 错误和 subversion 抱怨截断 SSL 响应。如果是这样的话,我会把颠覆作为我的主要嫌疑人。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2011-03-30
        • 2016-06-16
        • 2022-01-13
        • 1970-01-01
        • 2010-11-04
        • 2012-03-18
        • 1970-01-01
        • 2018-09-23
        相关资源
        最近更新 更多