Apache 和 mod_wsgi,工作进程停留在 W 状态,请求永不消亡。如何诊断?

Apache 和 mod_wsgi,工作进程停留在 W 状态,请求永不消亡。如何诊断?

我运行的是带有 mod_wsgi、Python 2.7 和 mpm_worker 的 Apache 2.2。偶尔,其中一个 worker进程卡住并且所有线程都停止在写入状态(如下面的屏幕截图所示)。

对于一个工作进程来说,这种情况每天会发生一次。

我认为这是因为

  • Apache 中的一些内部问题

  • mod_wsgi 工作进程中的所有 Python 线程都以某种方式死锁

到目前为止,我发现的唯一补救措施是 Apache 完全重启(不正常)。

我希望找到一些指示来诊断问题的原因

  • 为什么 ApaceTimeout不终止工作线程/进程。时间timeout是一分钟,但看起来这些线程和工作线程已经在一个请求上顺利运行了几个小时。

  • 是否可以从内部获取线程转储mod_wsgi并查看 Python 线程本身是否以某种方式死锁

  • 知道是什么原因造成的,以及如何补救这种情况吗?

下面是一个显示 Apache 的屏幕截图,server-status其中一个工作进程(1-0)卡住了。

在此处输入图片描述

答案1

正如链接问题中所建议的那样,打开WSGIDaemonProcess并切换到单独的守护进程后,这个问题不再出现。

相关内容