我正在使用mod_wsgi 3.4在Apache 2.4.7上运行Django应用程序。整个设置在EC2 ubuntu实例上。自从我部署应用程序以来,服务器每隔几天就会出现504/503错误,并在日志中显示此消息:
Script timed out before returning headers: wsgi.py
我进行了广泛的搜索但是我能得出的结论是我在某处有内存泄漏?我似乎无法弄清楚究竟出了什么问题,因为我的Django安装很香草。这是我的conf文件的相关部分:
WSGIScriptAlias / /home/ubuntu/projects/appname/app/app/app/wsgi.py
WSGIDaemonProcess app python-path=/home/ubuntu/projects/appname/app user=ubuntu
WSGIProcessGroup app
WSGIApplicationGroup %{GLOBAL}
这可能来自某些第三方图书馆吗?我安装的唯一附加功能是ImageMagick和exiftool,后者没有被使用。还有什么我可以做的调试吗?
答案 0 :(得分:2)
您的应用程序是否呼叫任何后端服务?
如果你收到503/504和那条消息,那么它通常会表明你的代码要么挂在后端服务上,要么你的代码无限期地阻塞了线程锁。
所以基本上所有请求线程都变得忙碌并且用完了。
如果他们没有提供这样一个古老版本的mod_wsgi,那么新版本至少有更好的选择来解决你的应用程序中的这类问题并自动恢复,加上日志信息来帮助你解决原因。< / p>
对于这样的旧版本,您可以设置&#39;不活动超时&#39; WSGIDaemonProcess选项到&#39; 60&#39;作为一种恢复方式,如果它还没有收到任何请求,这也会在60秒后重新启动您的应用程序,这本身对某些应用程序来说可能不太理想。在较新的版本中,不活动超时与请求超时的概念分开。