Apache flock_lock_file_wait删除PHP会话文件

我们的生产网站出现问题,我们的apache实例神秘地窒息。 服务器从来没有完全崩溃,只是阿帕奇耗尽资源。

看看这个情况,我已经把它跟踪到了一大堆我们的Apache进程永久卡在flock_lock_file_wait模式下。 一旦进程陷入这种模式,它永远不会离开。 那么主进程会产生另一个孩子,最终再次陷入这种模式,直到我们终于用完了可用的孩子,站点停下来。

通过在这些“卡住”进程之一上使用lsof发现的是,他们被困在删除的PHP5会话文件中。 这里是一个阻塞进程的lsof输出:

apache2 32489 www-data 36u REG 8,1 195 5974866 / var / lib / php5 / sess_bd5afe5ad8b05531d48a7e6f81638faa(已删除)

我进入该目录,是的,该文件已经消失。 所以Apache进程被卡住,试图从删除的文件写入(或读取)会话数据。

我的问题是 – 我现在做什么? 这似乎是Apache应该知道不要挂断电话的事情,但是我不知道如何告诉它在不重新启动Apache的情况下继续前进,现在我们几乎每天都要这样做。

有什么想法,我可以从哪里去?