如何找出是什么让我的PHP应用程序挂起Apache服务器?

时间:2012-01-27 12:17:41

标签: php apache

我遇到了一个问题,我的PHP应用程序有时会挂起,Apache服务器需要很长时间才能重启。有没有办法确定导致这种挂断的原因?

1 个答案:

答案 0 :(得分:7)

如果您使用的是Linux服务器,那么重要的解决方案可能是阻止您的Apache进程。

它将为您提供Apache进程完成的所有系统调用(和参数),并最终找到可能挂起的内容(或者发现您的脚本试图获取资源 - 例如文件 - 它可以' t读,打开一个套接字,等到超时等等。)

你这样调用它:

strace -f -p pid

pid是您想要追踪的过程的pid。

在您的情况下,我建议更改Apache服务器的配置(如果需要)以生成少量服务器。您使用常规ps命令获取其pid。 然后你可以通过添加-p pid1 -p pid2等同时扫描几个pid。 您还可以使用-o filename和-ff将每个进程strace写入filename.pid文件。然后运行HTTP请求。处理您的请求的进程将位于最大的.pid文件中。

还可以使用-s size指定要捕获的文本的长度,例如在“write”系统调用中,否则您可能会错过有趣的信息。

可能很难阅读,但可以提供真正有用的信息。我经常在绝望的情况下使用它!