2

我正在使用 uWSGI 和 nginx 来运行两个并行的 Django 应用程序。其中一个,负载稍多的一个(两者都非常小)每 24 小时大约每 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 ”消息?

谢谢

4

2 回答 2

5

查看日志:req: 1000/1000

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

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

于 2011-03-25T09:17:26.827 回答
0

看起来是这么回事。我们使用monit来监控和重启网站、数据库、隧道等。

于 2011-03-25T09:16:39.927 回答