2012-03-01 81 views
0

我已经通过the docs进行了读取,看起来很清楚。mod_wsgi(守护进程模式)没有重新加载源代码

我有2个多线程的mod_wsgi进程。通常我只需触摸wsgi脚本并重新加载源代码。但是定期更新不会重新加载,问题会持续几个小时。我不明白是什么导致它停止重新加载更改,也不知道是什么导致它在过去遇到问题时再次开始重新加载。

我试过杀死mod_wsgi进程,但没有任何区别。我自己无法重新启动Apache。

  1. 我还能做些什么来尝试强制重新加载?
  2. 我该如何防止这种情况继续发生?

这里是WSGI配置:

WSGIScriptAlias /ms20 /var/www-dev/wsgi-scripts/ms20.wsgi 
    WSGIDaemonProcess ms20 user=glpp group=glab processes=2 display-name=%{GROUP} 
    WSGIProcessGroup ms20 

    <Directory "/var/www-dev/wsgi-scripts"> 
     Order allow,deny 
     Allow from all 
    </Directory> 

回答

1

你没有运行文档中的测试,以验证请求在守护进程处理?

对WSGIDaemonProcess使用display-name选项,以便您可以使用'ps'验证只有mod_wsgi守护进程正在使用大量内存而不是所有Apache'httpd'进程。您的VirtualHost配置可能是错误的,并且您的WSGI应用程序正在以嵌入模式运行。

http://code.google.com/p/modwsgi/wiki/ConfigurationDirectives#WSGIDaemonProcess

+0

是的,我使用的显示名称选项,它似乎非常清楚,请求在守护进程模式几个月,现在处理。 (服务器上有两台运行PHP站点的虚拟主机,因此Apache进程正在使用它们)。错误(引用过期代码)看起来像[[Thu Mar 01 16:06:12 2012] [error] [client ###。###。###。#] mod_wsgi(pid = 6649):处理WSGI脚本'/ var/www-dev/wsgi-scripts/ms20.wsgi'.'时发生异常,并且pid是两个守护程序wsgi进程之一。我会在一秒钟内将配置添加到我的问题中。 – jmilloy 2012-03-01 22:39:10

+0

线程也如预期。我应该说服,还是我还有什么要验证? – jmilloy 2012-03-01 22:48:30

+0

如果只有一个WSGI应用程序,则可以尝试强制使用特定的子解释器,以确保不会跨多个请求分割请求,尽管使用该配置它应该是可能的。因此,添加'WSGIApplicationGroup%{GLOBAL}'。 – 2012-03-02 01:10:32