2

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

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

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

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

2 回答 2

3

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

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

于 2010-03-21T13:48:40.607 回答
0

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

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

于 2010-05-12T00:02:11.143 回答