14

nginxのドキュメントには

max_clients = worker_processes * worker_connections

しかし、キープアライブはこれにどのように影響しますか?2つのworker_processesと8192のworker_connectionsを使用して構成をセットアップしました。つまり、理論的には最大16384の同時接続を処理できます。16384ストリームのデータを同時にプッシュすることは非常に大きなことですが、60秒のkeepalive_timeoutがある場合、各クライアントが1分間接続を占有すると、その数はまったく異なる意味になります。どっち?

これらすべてに接続されているのは、log_formatディレクティブで使用できる$connection変数です。サーバーのパフォーマンスを分析できるように、次のログ形式を定義しました。

log_format  perf  '$request_time $time_local $body_bytes_sent*$gzip_ratio $connection $pipe $status $request_uri';

その$connection変数は、約1,100万から1200万の接続を報告しています。私は数学を専攻していませんが、明らかにその数はworker_processes*worker_connectionsよりもはるかに多いです。それで、それは何を表すことになっていますか?

要するに、私はworker_connectionの適切な値を決定する方法を理解しようとしています。

4

2 に答える 2

9

$ connectionはカウンターであり、現在使用されている接続の総数ではありません。だからそれは成長することを目的としています。

キープアライブ接続は破棄できないため、ルームはworker_processes*worker_connections-キープアライブ接続です。

于 2009-08-12T09:26:13.907 に答える
1

全体像を想像してみてください。最初のクライアントがあなたに接続し、ファイルを取得してから、ブラウザが60秒間接続を維持します。別のクライアントも接続、取得、および接続を維持します。最初の1分間の終わりに、(最悪の場合)すべてのクライアントが過去60秒間に接続を開いたまま、あなたに何かを要求した可能性があります。

したがって、最悪の場合、1秒で「worker_processes * worker_connections / keep_alive」接続を提供します。つまり、番号は約260になります。さらに必要な場合は、より多くの接続を割り当てる必要があります-キープアライブを提供するためだけに:nginxworker_processのチューニングで私の回答者を読んで1分あたり100kヒットを取得してください

afaik nginxは2.5MBのメモリに10kの非アクティブ(キープアライブ)接続を保持する可能性があるため、worker_connectionsを増やすことは安価で非常に安価です。ここでの主なボトルネックはOS自体かもしれないと思います

于 2011-11-22T08:47:45.293 に答える