Django、uWSGI 和 nginx:进程“无缘无故”死亡

Bjö*_*lja 2 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 ”的消息?

谢谢

小智 5

查看日志:req: 1000/1000

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

即使在 supervisord 下,您也应该始终在 uwsgi 上添加 --master/-M ,这将允许重新启动应用程序而不会丢失套接字(并且不会在重新启动期间向客户端吐出错误)。