mod_wsgi和Django应用程序会定期挂起

时间:2011-02-06 14:24:10

标签: mod-wsgi

我有一个大型的Django应用程序。它有两个指向不同设置文件的Apache虚拟主机,因此部分应用程序可通过一个URL访问,另一部分可通过另一个URL访问。 Django应用程序使用virtualenv。

mod_wsgi被配置为在守护进程模式下运行,Apache的VirtualHost块中包含以下内容:

# domain 1:
WSGIDaemonProcess fc processes=5 threads=5 display-name=%{GROUP} \
    user=nobody group=nobody
WSGIScriptAlias / /var/www/python/mine/apache/my.wsgi \
    process-group=fc application-group=%{GROUP}


# different apache.conf file for domain 2:
WSGIDaemonProcess fm processes=5 threads=5 display-name=%{GROUP} \
    user=nobody group=nobody

WSGIScriptAlias / /var/www/python/mine/apache/other.wsgi \
    process-group=fm application-group=%{GROUP}

在使用网站时,一次又一次,请求将挂起。它永远不会完成。我必须使用浏览器的“刷新”按钮来重新加载页面,然后请求通常会起作用。

Apache本身在prefork模式下运行,MaxRequestsPerChild设置为0,因为我读过这可能是个问题。这种情况经常发生,因此它可能成为一个潜在的问题 - 每100个请求可能就是这样。

有谁知道为什么会这样?

由于

1 个答案:

答案 0 :(得分:0)

对于WSGIDaemonProcess选项,应该是'application-group =%{GLOBAL}',而不是'%{GROUP}'。 '%{GLOBAL}'是特殊的,意味着主要的Python解释器。使用主解释器经常会遇到Python的第三方C扩展模块的问题,这些模块在子解释器中不起作用,包括遇到死锁。 '%{GROUP}'值仅与'display-name'选项相关。