2

uWSGI と nginx を使用して、2 つの並列 Django アプリを実行しています。そのうちの 1 つで、負荷がやや大きいもの (どちらも非常に小さい) は、24 時間ごとに約 1 回、次のメッセージで停止し続けます。

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

私が言ったように、まったく同じ方法で構成され、中断することなく実行されているアプリがもう 1 つありますが、トラフィックはほとんどありません。

手がかりはありますか?「...The work of process 16358 is done. Seeya」メッセージが表示されるのはなぜですか?

ありがとう

4

2 に答える 2

5

ログを見てください: req: 1000/1000

また、最大リクエスト数として 1000 を設定しました。

Supervisord の下であっても、常に uwsgi に --master/-M を追加する必要があります。これにより、ソケットを失うことなく (また、再起動中にクライアントにエラーを吐き出すことなく) アプリを再起動できます。

于 2011-03-25T09:17:26.827 に答える
0

それのように思えます。monit を使用して、Web サイト、データベース、トンネルなどを監視および再起動します。

于 2011-03-25T09:16:39.927 に答える