我正在使用共享主机。我看到越来越多的流程。当我查看ps aux
时,我发现每天都会添加两个<defunct>
lsphp
个进程。现在总数已超过40个,这个主机有100个总进程的硬盘,这让我很担心。
我注意到这些流程正在运行TIME
为0:29
或0:30
。这让我怀疑这些是执行时间不足的过程。我在开始附近的代码中手动设置了这个时间:ini_set('max_execution_time', 30);
因为我网站上最慢的脚本运行3-5秒30秒似乎给出了足够大的差距,知道该进程已挂起并赢了不会继续。然而,这似乎适得其反。
我查看了应用程序日志,似乎挂起的进程(至少是超出时间限制的进程)是最长的DomPDF进程。我的猜测是用户请求PDF但在准备PDF之前关闭连接并且发送了答案,这可能会使进程处于空闲状态......或者只是DomPDF处于这种状态?
可能是什么原因?我该怎么做才能解决这个问题?
我可以通过某种方式(通过修改PHP脚本)阻止这些进程进行僵尸化吗?我是否有机会终止进程(我无权重启机器或杀死父进程)。
答案 0 :(得分:1)
您没有告诉我们系统如何配置,除了它是共享托管&#34;。它是共享托管意味着您不太可能有权影响其行为,并且您应与之交谈的第一个人员是服务提供商 - 之后所有你付给他们的支持。
你看到php进程暗示它被配置为CGI或fastCGI - (或者,上帝禁止,suPHP)。虽然有许多原因导致您可能拥有僵尸进程,但这些可能不会计入您的服务器限制(您没有说明这是如何实施/强制执行的)。可能的原因是:
与您的托管服务提供商联系。