【问题标题】:Django site on Nginx+FastCGI goes (504 gateway timeout)Nginx+FastCGI 上的 Django 站点运行(504 网关超时)
【发布时间】:2010-03-18 00:54:51
【问题描述】:

有时我的整个基于 Django 的站点会出现 504 网关超时错误,因此无法显示任何页面。

是否可以编写一个 shell 程序并让它每 5 分钟运行一次 cronjob 以检测此类错误并在需要时重新启动 FastCGI 进程?

我目前正在使用以下命令重新启动 FastCGI,以防它崩溃,但它不适用于上述情况,因为当发生 504 网关错误时,进程仍在运行。

ps ax | grep -v grep | grep port=8001 > /dev/null || restart_fcgi.sh

【问题讨论】:

    标签: python django timeout fastcgi restart


    【解决方案1】:

    也许您应该找出为什么该站点首先开始提供 504 错误 - 检查日志(如果您没有足够的信息,则添加日志记录),然后解决任何问题。或者,您可能会发现 nginx + apache + mod_wsgi 是一种更稳定的方法 - nginx 是用于提供静态内容的出色前端 Web 服务器,但 Apache 非常适合托管动态进程。尝试将它们结合起来。我曾经使用 nginx + fastcgi,但我发现前者是一种更稳定的方法。

    如果您仍然无法确定导致问题的原因,您可以设置一个在本地运行的监控脚本并检查响应代码 - 如果它发现 5XX,它可以强制重新启动您的 fastcgi 进程。您可以使用 Python + httplib 作为脚本,并在上面运行您的 shell 脚本(加上合适的 kill -9 语句)的 os.system。

    【讨论】:

      【解决方案2】:

      我想如果你有这个问题,那么supervisor 是你的朋友。一个非常好的朋友。与 daemontools 一样,除了简单的配置、大量帮助和非 root 用户使用。

      您应该尝试确定问题所在,但无论如何,一个小时的准备意味着您将能够依靠在失败后重新启动的过程足够长的时间来过您的生活。

      【讨论】:

        猜你喜欢
        • 2013-10-17
        • 2011-04-02
        • 2011-10-04
        • 2016-06-19
        • 2011-08-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-20
        相关资源
        最近更新 更多