2009-08-11 14 views
14

nginxのドキュメントは言う

max_clients = worker_processes * worker_connections 

が、関係は何ですかどのようにこの中にキープアライブ要因?私は2つのworker_processesと8192 worker_connectionsで私の構成設定を持っています。つまり、理論上、最大16384の同時接続を処理できます。 16384ストリームのデータを同時にプッシュアウトするのは大変ですが、60秒のkeepalive_timeoutを設定している場合は、各クライアントが1分間接続をホッギングすると、その数は全く異なる意味になります。どちらですか?

これには、log_formatディレクティブで使用できる$ connection変数がすべて接続されています。 $接続変数は約11から12000000の接続が報告されていることが

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

:私はので、私は、サーバーのパフォーマンスを分析することができ、次のログ形式を定義しました!私は数学ではありませんが、明らかにその数はworker_processes * worker_connectionsよりも高いです。だから、それは何を表わすはずですか?

つまり、については、の値を調べてworker_connectionの値を決めようとしています。

答えて

9

$接続は、現在使用されている接続の総数ではなく、カウンタです。それは成長することを意図しています。部屋はworker_processesあるので

キープアライブ接続は、破棄することはできません* worker_connections - キープアライブ接続

+0

カウンター!今あなたはそれを私はパターンを見ることができると言う。このようなあいまいな質問にお答えいただき、ありがとうございます。 – Daniel

1

だけで全体像を想像:最初のクライアントは、あなたに接続されたファイルを取得し、ブラウザが60秒のための接続を保持します。別のクライアントが接続し、取得し、接続を維持します。最初の1分が終わると、最後の60秒間に何かリクエストされたクライアントから依然として接続を開いたままにすることができます(最悪の場合)

したがって、最悪の場合、 "worker_processes * worker_connections/keep_alive "接続を1秒間に、つまり約260件の接続に使用します。あなたがより多くを必要とする場合、あなたはより多くの接続をALLOC必要があります - ちょうどキープアライブにサービスを提供するために:nginxの私の知る限りTuning nginx worker_process to obtain 100k hits per min

で私answerrを読んでメモリの2.5メガバイトで非アクティブ(keepalivedの)接続の10Kを保持することができるので、worker_connectionsを増やすことは非常に安い、安いです。私は、ここでの主なボトルネックはあなた自身のOSかもしれないと思う。

関連する問題