处理共享主机上的Zombie PHP进程

时间:2017-01-02 21:14:23

标签: php zombie-process

我正在使用共享主机。我看到越来越多的流程。当我查看ps aux时,我发现每天都会添加两个<defunct> lsphp个进程。现在总数已超过40个,这个主机有100个总进程的硬盘,这让我很担心。

我注意到这些流程正在运行TIME0:290:30。这让我怀疑这些是执行时间不足的过程。我在开始附近的代码中手动设置了这个时间:ini_set('max_execution_time', 30);因为我网站上最慢的脚本运行3-5秒30秒似乎给出了足够大的差距,知道该进程已挂起并赢了不会继续。然而,这似乎适得其反。

我查看了应用程序日志,似乎挂起的进程(至少是超出时间限制的进程)是最长的DomPDF进程。我的猜测是用户请求PDF但在准备PDF之前关闭连接并且发送了答案,这可能会使进程处于空闲状态......或者只是DomPDF处于这种状态?

可能是什么原因?我该怎么做才能解决这个问题?

我可以通过某种方式(通过修改PHP脚本)阻止这些进程进行僵尸化吗?我是否有机会终止进程(我无权重启机器或杀死父进程)。

1 个答案:

答案 0 :(得分:1)

您没有告诉我们系统如何配置,除了它是共享托管&#34;。它是共享托管意味着您不太可能有权影响其行为,并且您应与之交谈的第一个人员是服务提供商 - 之后所有你付给他们的支持。

你看到php进程暗示它被配置为CGI或fastCGI - (或者,上帝禁止,suPHP)。虽然有许多原因导致您可能拥有僵尸进程,但这些可能不会计入您的服务器限制(您没有说明这是如何实施/强制执行的)。可能的原因是:

  • 您有某种fCGI流程管理器正在执行时间限制 - 您可能无法访问
  • 您的某些脚本中有ignore_user_abort(true)

与您的托管服务提供商联系。