Apache停止处理请求(mod_wsgi?)

时间:2012-06-09 13:05:03

标签: apache2 mod-wsgi ubuntu-10.04

在某些时候,我的网站在带有mod_wsgi的Apache2上运行停止处理请求。维护与服务器的连接,客户端等待进行响应,但apache永远不会返回。此时服务器处于0%CPU ,没有任何处理。我认为,apache只是将请求发送到队列,并且永远不会让它们离开那里。 当我执行apache2ctl graceful时,问题不会解决。仅在apache2ctl restart之后。

我的网站是Pyramid的4实例wsgi应用程序和Zope 3的2个实例。它正在运行,并且没有速度问题,我知道。

版本:    Ubuntu 10.04    apache2 2.2.14-5ubuntu8.9    libapache2-mod-wsgi 2.8-2ubuntu1

1 个答案:

答案 0 :(得分:0)

听起来您正在使用嵌入式模式来运行多个应用程序,并且您正在使用在子解释器中存在问题的第三方C扩展,从而导致潜在的死锁。否则,您的代码会在内部死锁或阻塞外部服务,并且永远不会返回,从而导致可用进程/线程耗尽。

首先,您应该查看使用守护程序模式并将每个Web应用程序委派给不同的守护程序进程组,然后强制每个应用程序在主解释器中运行。

请参阅:

http://code.google.com/p/modwsgi/wiki/QuickConfigurationGuide#Delegation_To_Daemon_Process http://code.google.com/p/modwsgi/wiki/ApplicationIssues#Python_Simplified_GIL_State_API

否则请使用以下所述的调试技巧:

http://code.google.com/p/modwsgi/wiki/DebuggingTechniques

获取有关应用程序正在执行的堆栈跟踪。