django uwsgi 502 504 bad gateway问题的解决

最近跑在nginx下的django经常时不时会出现504 bad gateway的问题,很是恼火。其主要问题估计源于程序中的一些网络请求,常常会连接或读取数据超时,抑或是页面执行的时间太久,即使关闭请求,整个django还是会卡在504中,整个网站挂起。

起初是认为nginx的设置,将socket的的读写超时设置了,不起作用。估摸着问题还是出在uwsgi中,于是Google之,发现了一个uwsgi的参数harakiri。它可以设置进程在一定时间内超时后,自动干掉自己并重启。harakiri是日文切腹的意思,还真是形象,哈哈。

harakiri 这个选项会设置harakiri超时时间。如果一个请求花费的时间超过了这个harakiri超时时间,那么这个请求都会被丢弃,并且当前处理这个请求的工作进程会被回收再利用(即重启)。 –harakiri 60

这个60可以设置成需要的超时秒数即可。

同时uwsgi需要使用master模式,启动参数上加 -M 即可。

修改后重启django,开了2个工作进程,认为激发超时504 bad gate way,进程会杀掉自己并重启,不妨碍其它用户打开网站。

记录下来备忘,具体表现有待观察。

VN:F [1.9.22_1171]
Rating: 8.5/10 (6 votes cast)
VN:F [1.9.22_1171]
Rating: +1 (from 1 vote)
django uwsgi 502 504 bad gateway问题的解决, 8.5 out of 10 based on 6 ratings

3 评论

  1. test

    VN:F [1.9.22_1171]
    Rating: 0.0/5 (0 votes cast)
    VN:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  2. 我最近也在学django, 发现布置到服务器上是最难的一步。

    VA:F [1.9.22_1171]
    Rating: 0.0/5 (0 votes cast)
    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  3. 收藏一下,正在学python web开发,可能以后用得着。

    VA:F [1.9.22_1171]
    Rating: 0.0/5 (0 votes cast)
    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)

发表评论

电子邮件地址不会被公开。 必填项已用*标注