【问题标题】:Trouble with Django and mod_wsgi: "Script timed out before returning headers: wsgi.py"Django 和 mod_wsgi 的问题:“脚本在返回标头之前超时:wsgi.py”
【发布时间】:2015-09-07 05:33:02
【问题描述】:

我正在使用 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,后者没有被使用。还有什么我可以调试的吗?

【问题讨论】:

    标签: django apache amazon-ec2 mod-wsgi


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 脸红了——我忘了​​我有一个调用第三方 API 的 cronjob,很可能就是它!至于 mod_wsgi,我是通过获取 libapache2-mod-wsgi 包而不是从源代码安装它的,所以也许这就是它如此过时的原因......
    猜你喜欢
    • 2014-10-18
    • 2019-01-31
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-08
    相关资源
    最近更新 更多