2016-08-16 19 views
2

私は、単一のCPU Ubuntu 14.04イメージにインストールされたuWSGIアプリケーションサーバーを備えたNginx Webサーバーを持っています。uWSGIサーバーに使用するワーカーとスレッドの標準数は何ですか?

このuWSGIアプリサーバーは、Flaskアプリリクエストを正常に処理します。 私が直面している問題は、1人のクライアントからの要求が長期間(1〜2時間)タイムアウトすることがあることです。

これは、私のuwsgi.confファイルにワーカーまたはスレッドを指定せずに起こっていました。 CPUあたりに使用するワーカー/スレッドの理想的な量はありますか?

私はemperorサービスを使用してuWSGIアプリケーションサーバーを起動しています。 これは私のuwsgi.confはnginxの/ uwsgiに関しては、これはパフォーマンス上の問題である可能性

description "uWSGI" 
start on runlevel [2345] 
stop on runlevel [06] 
respawn 

env UWSGI=/var/www/parachute_server/venv/bin/uwsgi 
env LOGTO=/var/log/uwsgi/emperor.log 

exec $UWSGI --master --workers 2 --threads 2 --emperor /etc/uwsgi/vassals --die-on-term --uid www-data --gid www-data --logto $LOGTO --stats 127.0.0.1:9191 

のように見えるか、それは私が唯一の単一のCPUを使用していますので、これらのタイムアウトがoccuringしていることがより可能性がある何ですか?

ご協力いただきありがとうございます。あなたが持っている

答えて

3

興味深い問題...

一般的に、あなたはこれがuWSGIが読み取りを実行される可能性がありますので、/ソケットへの書き込みで、少なくとも2 * #CPUs + 1を指定したい、とあなたはよ他の労働者に依頼を受けさせる。また、threadsフラグは、ワーカーが同期している場合に役立ちます。なぜなら、作業中であることをマスタースレッドに通知してタイムアウトを防ぐことができるからです。

あなたのタイムアウト(他のすべてのリクエストをブロックしている)の理由は1人だと思うが、あなたのアプリからあなたの回答を調べるべきだ。彼らが長い時間を取っている場合(dbから読んでいる場合)、Nginxのuwsgi_read_timeoutディレクティブを調整して、uWSGIが要求を処理できるようにする必要があります。

こちらがお役に立てば幸いです。

関連する問題