基本的hello.wsgi工作正常。 其他的django应用程序也完美地使用完全相同的virtualenv版本。
mod_wsgi挂起~10分钟(!!!),我什么都看不到问题(logleveldebugging):
[Tue Mar 25 23:11:08.878578 2014] [:info] [pid 4719:tid 140720591648640] mod_wsgi (pid=4719): Attach interpreter ''. [Tue Mar 25 23:11:08.879171 2014] [:info] [pid 4717:tid 140720591648640] mod_wsgi (pid=4717): Attach interpreter ''. [Tue Mar 25 23:11:10.891348 2014] [authz_core:debug] [pid 4730:tid 140720477226752] mod_authz_core.c(802): [client 127.0.0.1:40844] AH01626: authorization result of Require all granted: granted [Tue Mar 25 23:11:10.891391 2014] [authz_core:debug] [pid 4730:tid 140720477226752] mod_authz_core.c(802): [client 127.0.0.1:40844] AH01626: authorization result of <RequireAny>: granted [Tue Mar 25 23:11:10.891489 2014] [authz_core:debug] [pid 4730:tid 140720477226752] mod_authz_core.c(802): [client 127.0.0.1:40844] AH01626: authorization result of Require all granted: granted [Tue Mar 25 23:11:10.891497 2014] [authz_core:debug] [pid 4730:tid 140720477226752] mod_authz_core.c(802): [client 127.0.0.1:40844] AH01626: authorization result of <RequireAny>: granted [Tue Mar 25 23:11:10.903921 2014] [:info] [pid 4719:tid 140720469034752] mod_wsgi (pid=4719): Create interpreter 'prj-dev|'. [Tue Mar 25 23:11:10.905378 2014] [:info] [pid 4719:tid 140720469034752] [remote 127.0.0.1:57616] mod_wsgi (pid=4719, process='prj.project-dev', application='prj-dev|'): Loading WSGI script '/var/www/prj.project-dev/venv/www/public/index.wsgi'. [Tue Mar 25 23:11:12.014799 2014] [:error] [pid 4719:tid 140720469034752] /usr/lib/python2.7/dist-packages/numpy/oldnumeric/__init__.py:11: ModuleDeprecationWarning: The oldnumeric module will be dropped in Numpy 1.9 [Tue Mar 25 23:11:12.014843 2014] [:error] [pid 4719:tid 140720469034752] warnings.warn(_msg, ModuleDeprecationWarning) [Tue Mar 25 23:11:12.014846 2014] [:error] [pid 4719:tid 140720469034752] [Tue Mar 25 23:16:11.888631 2014] [:info] [pid 4719:tid 140720485820160] mod_wsgi (pid=4719): Daemon process deadlock timer expired, stopping process 'prj.project-dev'. [Tue Mar 25 23:16:11.888761 2014] [:info] [pid 4719:tid 140720591648640] mod_wsgi (pid=4719): Shutdown requested 'prj.project-dev'. [Tue Mar 25 23:16:16.889065 2014] [:info] [pid 4719:tid 140720121513728] mod_wsgi (pid=4719): Aborting process 'prj.project-dev'. [Tue Mar 25 23:16:16.895499 2014] [core:error] [pid 4730:tid 140720477226752] [client 127.0.0.1:40844] End of script output before headers: index.wsgi [Tue Mar 25 23:16:17.160980 2014] [:info] [pid 5295:tid 140720591648640] mod_wsgi (pid=5295): Attach interpreter ''.
Apacheconfiguration也没有什么有趣的。 相同的configuration在其他服务器上工作。
<VirtualHost *:80> ServerName prj-dev ServerAdmin admin@force.fm DocumentRoot "/var/www/prj.project-dev/venv/www/public" ErrorLog /var/log/apache2/prj.project-dev/error_log CustomLog /var/log/apache2/prj.project-dev/access_log common Alias /media/ /var/www/prj.project-dev/venv/prj/prj/media/ Alias /static/ /var/www/prj.project-dev/venv/prj/prj/static/ Alias /usermedia/ /var/www/prj.project-dev/venv/prj/prj/usermedia/ <Directory /var/www/prj.project-dev/venv/prj/prj/usermedia> Order deny,allow Allow from all </Directory> <Directory /var/www/prj.project-dev/venv/prj/prj/media> Order deny,allow Allow from all </Directory> <Directory /var/www/prj.project-dev/venv/prj/prj/static> Order deny,allow Allow from all </Directory> WSGIDaemonProcess prj.project-dev user=user group=user processes=2 threads=2 display-name=%{GROUP} WSGIProcessGroup prj.project-dev WSGIScriptAlias / /var/www/prj.project-dev/venv/www/public/index.wsgi XSendFile on <Directory /var/www/prj.project-dev/venv/www/public> Order deny,allow Allow from all </Directory> </VirtualHost>
没有什么有趣的wsgi :
import os, sys activate_this = '/var/www/prj.project-dev/venv/bin/activate_this.py' execfile(activate_this, dict(__file__=activate_this)) sys.path = [ '/var/www/prj.project-dev/venv/lib/python2.7/site-packages/', '/var/www/prj.project-dev/venv/prj/', '/var/www/prj.project-dev/venv/', ] + sys.path os.environ['DJANGO_SETTINGS_MODULE'] = 'prj.settings' import django.core.handlers.wsgi #from raven.contrib.django.middleware.wsgi import Sentry application = django.core.handlers.wsgi.WSGIHandler() #application = Sentry(django.core.handlers.wsgi.WSGIHandler())
我的问题是:我怎么能得到它挂起的真实原因?
这由mod_wsgi文档覆盖。
http://code.google.com/p/modwsgi/wiki/ApplicationIssues#Python_Simplified_GIL_State_API
简而言之,你可能使用了一个Python扩展模块,这个扩展模块在Python子解释器中没有被正确的实现。 在进行阻塞操作时,扩展模块不能正确释放GIL。 两者都可能导致解释器死锁。
使用文档中的解决方案,看看是否有帮助。
<VirtualHost *:80> serverName localhost serverAlias localhost serverAdmin raghav@xyz.com <Directory /var/www/mysite/mysite> AddHandler wsgi-script .py Options +ExecCGI </Directory> DocumentRoot /var/www/mysite WSGIDaemonProcess myproject python-path=/var/www/mysite:/var/www/environ/lib/python2.7/site-packages #WSGIProcessGroup mysite WSGIScriptAlias / /var/www/mysite/mysite/wsgi.py WSGIApplicationGroup %{GLOBAL} <Directory /var/www/mysite/mysite/> order deny,allow Allow from all </Directory>
我也有同样的错误,我已经通过使用这种配置解决了这个问题。
还要/etc/apache2/apache.config下行添加到/etc/apache2/apache.config
#WSGIPythonPath /var/www/mysite
我知道这个线程是三岁,但当我有类似的问题,我偶然发现,所以我想我会添加我的解决方案。 在我的情况下,这是虚拟环境中的东西,需要在Apache中启用mod_ssl,即使没有一个站点使用SSL(以及他们这样做,但在别处终止)。 所以
a2enmod ssl service apache2 restart
修复。
通过上面的答案挖掘。 我必须将进程数量从5设置为1.还要使用多工人mpm。
Loadmodulee mpm_worker_module modules/mod_mpm_worker.so WSGIDaemonProcess music user=apache group=apache processes=1 threads=30 python-path=/srv/www/music/service/venv/lib/python2.7/site-packages