2011-03-25 261 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來監控和重啓網站,數據庫,隧道等