7

我有一个在 VPS 托管服务上运行的自定义脚本的网站。所有脚本都通过 index.php 使用 mod_rewrite 和 .htaccess 来获取友好的 URL

我的脚本中的某些内容正在产生高 CPU 使用率,如下所示: CPU使用率

当我去strace一个给定的过程时,我得到了我不明白的:

    setitimer(ITIMER_PROF, {it_interval={0, 0}, it_value={90, 0}}, NULL) = 0
    rt_sigaction(SIGPROF, {0x7a6b8f, [PROF], SA_RESTORER|SA_RESTART, 0x2af8ae8742f0}, {0x7a6b8f, [PROF],    SA_RESTORER|SA_RESTART, 0x2af8ae8742f0}, 8) = 0
    rt_sigprocmask(SIG_UNBLOCK, [PROF], NULL, 8) = 0

这在无限循环中不断重复。

我需要知道的是如何追踪导致此问题的确切 PHP 脚本。有什么建议么?

4

2 回答 2

6

如果您可以将 PECL proctitle 包安装到您的 PHP 安装中,您可以使用它来index.php将其进程标题设置为它传递给的脚本的名称。(更改后的流程标题可能会或可能不会出现在特定的流程表可视化工具中;ps如果所有其他方法都失败,请使用。)

于 2012-06-28T20:51:57.423 回答
2

在脚本中使用 getmypid() 函数。只需将其输出到日志文件或其他内容即可查看哪个脚本是哪个。

编辑:使用 auto_prepend_file 配置设置自动将此片段包含在所有文件中:

php_value auto_prepend_file append.php
于 2012-06-28T20:47:45.287 回答