为什么mod_wsgi会出现零星的500错误?

时间:2015-01-15 05:52:06

标签: python django apache mod-wsgi

我的Django应用程序(使用Apache 2.2.22在Debian上运行)遇到问题,日志中的mod_wsgi“过早脚本退出”错误偶尔会突发500次错误。我挖了一下,看起来崩溃可能是由于内存耗尽导致的,因此我发现了一个糟糕的内存猪bug并修复了它。然而,与此同时,我正在阅读有关mod_wsgi配置的内容,并决定对我的设置进行一些其他更改。我补充说......

stack-size=524288 maximum-requests=500 inactivity-timeout=5 

到我的Apache配置,使它看起来像这样......

WSGIScriptAlias / /home/myapp/src/myapp-api/myapp/wsgi.py
WSGIDaemonProcess myapp user=me group=team processes=4 threads=16 stack-size=524288 maximum-requests=500 inactivity-timeout=5 python-path=/home/myapp/src/myapp-api:/home/myapp/.virtualenvs/myapp/lib/python2.7/site-packages
WSGIProcessGroup myapp
WSGIPassAuthorization On

我在我的开发服务器上测试了一切似乎很好,但是一旦我将它部署到服务器上的负载更多,我看到了大量零星的500错误,再次记录“过早脚本退出”,但这次没有内存问题和系统有足够的空闲RAM。

我对导致这种情况的原因感到茫然。日志中唯一的新错误是

[Wed Jan 14 20:17:16 2015] [error] Exception AttributeError: "'NoneType' object has no attribute 'error'" in <bound method TCPTransport.__del__ of <amqp.transport.TCPTransport object at 0x7ff4b0e69d10>> ignored

这似乎与我对Celery和AMQP的使用有关,所以这可能是C模块互操作的问题?

如果堆栈大小问题是一个问题,我希望看到我的django代码中的错误,而不是mod_wsgi中的错误,那么还有什么可能导致这个?

0 个答案:

没有答案