Django 和 mod_wsgi 的问题:"Script timed out before returning headers: wsgi.py"

Trouble with Django and mod_wsgi: "Script timed out before returning headers: wsgi.py"

我是 运行 Apache 2.4.7 和 mod_wsgi 3.4 上的 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,后者未被使用。我还能做些什么来调试吗?

您的应用程序是否调用任何后端服务?

如果您收到 503/504 和该消息,那么它通常表示您的代码要么挂在后端服务上,要么您的代码无限期地阻塞在线程锁上。

所以基本上所有的请求线程都变得忙碌并用完了。

如果他们没有提供如此古老的 mod_wsgi 版本,那么较新的版本至少有更好的选择来解决您的应用程序中的此类问题并自动恢复,加上日志信息以帮助您工作为什么。

对于这样的旧版本,您可以将 WSGIDaemonProcess 的 'inactivity-timeout' 选项设置为“60”作为恢复的一种方式,但如果不是,这也会在 60 秒后重新启动您的应用程序。也不会收到任何请求,这本身可能不适合某些应用程序。在较新的版本中,不活动超时与请求超时的概念是分开的。