46

uwsgiでフラスコアプリを実行しています。スーパーバイザを使用して uwsgi プロセスを管理しています。私はそれを言っているログを見つけます

サーバー ソケットのリッスン バックログは 100 接続に制限されています。

100接続の制限を克服するには? 私の実行中のスクリプトは次のとおりです。

[program:myapp]
command=uwsgi --master -s /tmp/app.sock --module myapp:app --processes 2 -H /srv/sites/mysite chmod-socket 666 --enable-threads
4

4 に答える 4

48

100 接続の「リッスン バックログ」は、サーバーが 100 の同時 (または合計) 接続しか処理できないという意味ではないことに注意してください。これは、構成されたプロセスまたはスレッドの数に依存します。リッスン バックログは、リッスン ソケットのリッスン キュー内の未処理の (まだ受け入れられていない) 接続の数を制限する方法をカーネルに指示するソケット設定です。保留中の接続の数が指定されたサイズを超えると、新しい接続は自動的に拒否されます。定期的に接続にサービスを提供している機能しているサーバーは、大きなバックログ サイズを必要としません。

マニュアルによると、次の-lオプションでリッスン バックログを変更できます。

-l|--listen <num>
       set  socket  listen queue to <n> (default 100, maximum is system
       dependent)
于 2012-09-09T14:49:52.480 に答える
45

-lサーバーの起動時にor--listenオプション ( user4815162342 が指す) を使用して uwsgi のリッスン バックログを単純に128 より大きい値に増やすと、uwsgi の起動が停止する場合があります。また、Unix ソケットと TCP 接続リッスン キューにはシステム レベルの制限があり、デフォルトは 128 ですが、これを増やす必要があります。

この設定は次のように確認できます。

cat /proc/sys/net/core/somaxconn

uwsgi は、uwsgi の起動中にパラメーターに渡された値がシステム レベルの制限より大きい場合、uwsgi が激しく失敗するようにパッチが適用されています。--listenuwsgi のリッスン キューの制限をシステム レベルの制限よりも大きく設定する場合は、最初にカーネルの制限を増やす必要があります。これは、次のコマンドを実行して実行できます。

$ echo 4096 > /proc/sys/net/core/somaxconn

または

$ sysctl -w net.core.somaxconn=4096

または、再起動後も持続するように追加net.core.somaxconn=4096します。/etc/sysctl.conf

于 2016-04-06T13:22:22.210 に答える
3

で SOMAXCONN を変更して、/proc/sys/net/core/somaxconnこの制限を増やすことができます。

これは単なる Linux チューニング システムです。

于 2012-09-10T21:27:36.453 に答える