我有一个正在运行的 PHP 服务器,其中有 cron 作业等... 每天一次(午夜至凌晨 3 点之间),apache 会生成一个永不结束的进程。该服务器是一个虚拟服务器,因此几天内它就会耗尽整个内存。
有没有办法找出崩溃的原因?哪个 php 脚本没有完成?或者通过 apache 触发了哪个 url?
我尝试查看访问日志和错误日志,但没有发现任何异常。
谢谢
答案1
去做/proc/$PID那个可疑的 httpd 进程并调查环境和命令. 做ls -Fal
一个自由度子目录来查看其活动文件句柄。
如果这没有引起您的注意 - 请将结果作为对您的问题的编辑发布。
答案2
您可以尝试启用 mod_status:http://httpd.apache.org/docs/2.2/mod/mod_status.html
这将允许您连接有问题的脚本的 PID 和请求路径,并且对于一般管理也很有用。
如果这还不足以找到罪魁祸首,您可能需要在作业中添加一些日志语句,以帮助您找到脚本循环和/或终止的位置,或者如果您感兴趣的话,甚至可以附加一个调试器。
另外,就像 Jarry 所建议的那样,您可以使用 lsof 来确定进程当前打开了哪些文件/连接,这可能会为您提供有关它正在尝试做什么的线索。