Django网站在Nginx+FastCGI上出现(504网关超时)
有时候,我的整个基于Django的网站会出现504网关超时错误,这样就无法显示任何页面。
有没有可能写一个脚本,并设置定时任务每5分钟运行一次,来检测这些错误,并在需要时重启FastCGI进程呢?
我现在使用下面的命令来重启FastCGI,以防它崩溃,但这对上面提到的情况没用,因为当出现504网关错误时,进程仍然在运行。
ps ax | grep -v grep | grep port=8001 > /dev/null || restart_fcgi.sh
2 个回答
0
我觉得如果你遇到这个问题,supervisor会是你的好帮手。非常好的帮手。就像daemontools,但配置简单,有很多帮助,而且不需要root权限。
当然,你应该努力找出问题所在,但无论如何,花一个小时准备一下,可以让你在程序出错后自动重启,这样你就可以安心生活了。
3
首先,你应该先弄清楚网站为什么会出现504错误。可以查看日志(如果没有足够的信息,可以添加日志记录),找出问题所在并解决它。或者,你可以考虑使用nginx + apache + mod_wsgi的组合,这样可能会更稳定。nginx是一个非常棒的前端服务器,适合用来处理静态内容,而Apache则非常适合运行动态程序。试着把它们结合起来。我以前用过nginx + fastcgi,但发现nginx和apache的组合更稳定。
如果你还是找不到问题的原因,可以设置一个监控脚本在本地运行,检查响应代码。如果发现有5XX错误,它可以强制重启你的fastcgi进程。你可以用Python和httplib来写这个脚本,然后用os.system来运行你的shell脚本(加上合适的kill -9命令)。