Django,uWSGI& nginx:流程因“无理由”而死

时间:2011-03-25 08:59:25

标签: django nginx uwsgi supervisord

我正在使用uWSGI和nginx来运行两个并行的Django应用程序。其中一个,负载稍大(两个都非常小),每24小时就会死一次,并发出以下信息:

[pid: 16358|app: 0|req: 1000/1000] 127.0.0.1 () {46 vars in 847 bytes} [Thu Mar 24 16:38:31 2011] GET /aktivitet/409/picknick/ => generated 18404 bytes in 117 msecs (HTTP/1.0 200) 3 headers in 156 bytes (1 switches on core 0) ...The work of process 16358 is done. Seeya!

我正在使用Supervisor启动使用以下配置的进程:

[program:uttrakad] command=/home/myuser/webapps/uwsgi_test/bin/uwsgi -s /home/myuser/webapps/uwsgi_test/app1.sock -C /home/myuser/webapps/django/app1.wsgi --processes 1 --harakiri 120 --max-requests 1000 autostart=true autorestart=true stdout_logfile=/home/myuser/logs/user/uwsgi_app1.log redirect_stderr=true stopsignal=QUIT

.wsgi文件很简单:

import os import sys sys.path =['/home/openworks/webapps/django/lib/python2.6/','/home/openworks/webapps/django/','/home/openworks/webapps/django/app1/'] + sys.path from django.core.handlers.wsgi import WSGIHandler os.environ['DJANGO_SETTINGS_MODULE'] = 'app1.prod_settings' application = WSGIHandler()

nginx设置了2个工作进程,2048个worker_connections,如下所示: location / { uwsgi_pass unix:///home/openworks/webapps/uwsgi_test/app1.sock; include uwsgi_params; }

正如我所说,还有一个应用程序配置完全相同的方式,没有中断运行,但几乎没有流量。

任何线索?为什么我得到“ ......过程16358的工作已经完成。Seeya ”messsage?

由于

2 个答案:

答案 0 :(得分:4)

查看日志:req:1000/1000

您已将1000设置为最大请求数。

你应该总是在uwsgi上添加--master / -M,即使在supervisord下也是如此,这将允许在不丢失套接字的情况下重启应用程序(并且在重启期间不会向客户端吐出错误)。

答案 1 :(得分:0)

似乎喜欢它。我们使用monit来监控和重启网站,数据库,隧道等。