我正在使用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?
由于
答案 0 :(得分:4)
查看日志:req:1000/1000
您已将1000设置为最大请求数。
你应该总是在uwsgi上添加--master / -M,即使在supervisord下也是如此,这将允许在不丢失套接字的情况下重启应用程序(并且在重启期间不会向客户端吐出错误)。
答案 1 :(得分:0)
似乎喜欢它。我们使用monit来监控和重启网站,数据库,隧道等。