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

Tow*_*wer 1 php apache

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

hue*_*ois 7

如果您使用的是Linux服务器,那么一个重要的解决方案可能就是让您的Apache进程脱颖而出.

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

你这样调用它:

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"系统调用中,否则您可能会错过有趣的信息.

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