2011-03-25 114 views
1

我正在使用uWSGI和nginx运行两个并行Django应用程序。其中一人,一个有几分更多的负载(都是非常小)不断死亡约每24小时一次,出现以下消息:Django,uWSGI&nginx:进程死于“无理由”

[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!

我推出使用监控器,具有以下配置的processess:

[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; }

正如我所说的,还有一个应用程序配置已运行没有interuption方式不尽相同,但几乎没有流量。

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

谢谢

+0

我thiniking ...难道是--max-请求1000导致,但工人不能重生? – 2011-03-25 09:02:04

回答

4

看看日志:REQ:1000/1000

并已设置1000作为最大信号请求数。

你应该总是添加--master/-M上uwsgi即使在supervisord,这将允许重新启动应用程序,而不会丢失插座(并且没有重新启动过程中吐出一个错误客户端)。

+0

谢谢,我会用-M!这会导致两个过程,但我想这应该会发生。 – 2011-03-25 09:43:01

0

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