2017-01-20 14 views
0

公式apache.orgウェブサイト:子プロセスはいくつの接続を処理できますか?

MaxConnectionsPerChildディレクティブは、個々の子サーバープロセスが終了するまでに処理する接続数の上限を設定します。

は、私はいくつかの明確化をいただければと思います

Q1:この設定は、preforkののコンテキスト内であるので、上記の接続数が接続要求(SYN_SENT)または受け入れ/確立された接続を指していますか?どのような状況下で、それを期限切れにするのがよいでしょうか?

Q2:ポート80でリッスンするだけの親とは異なり、プリフォークされた子はリスニングと確立された接続の両方を処理します。同時に処理できる同時接続要求(SYN_SENT)の制限はMaxRequestWorkersのapacheディレクティブによって制限されますが、ThreadsPerChildは並行ESTABLISHEDソケットの数を制限します。これは正しいです ?

質問3:子供がポート80でリッスンしている場合、親は何をしていますか?それは聞き続けますか?

ありがとうございました

+0

ThreadsPerChildがプリフォークのmpmで使用されていないことを理解しています – Amit

答えて

0

使用されているmpmによって異なります。 preforkのはMPMの場合 、子プロセスが一つの接続を処理します(そうServerLimitのは、MaxClientsの(今のapache 2.4のようMaxRequestWorkersと呼ばれる)が等しくなります。一人の子供が多くの接続を処理できる場所

労働者とイベントのMPMがスレッドを使用しています。

質問:MaxRequestsPerChildをMaxRequestsPerChildと呼びます。 MaxRequestsPerChildを設定する主な理由は、長寿命を避けるためですプロセスによってメモリリークが引き起こされる thのデフォルトのMaxRequestsPerChild eプリフォークMPMは1000で、作業員のMPMは0です。

Q2:コンセプト自体は正しいです。 MaxRequestWorkersとThreadsPerChildはプリフォークのmpmディレクティブではありません。

Q3:Parentは必要に応じて余分な子をプリフォークし続け、着信接続要求を処理するようにリスンを委任します。

Prefork 1/1接続の制限を克服するには、KeepAliveとそのサブディレクティブを有効にすることをお勧めします。これにより、クライアント/ブラウザは複数の同時GETリクエストを発行できるため、1つのTCP接続ですべてのページ要素を取得できます。これは、高価なtcpハンドシェイクを大幅に削減するため、待ち時間を短縮します。今日、ほとんどのブラウザはキープアライブ機能をサポートしています。

KeepAliveTimeoutでタイムアウトを設定して、閉じられていないブラウザのタブで接続スロットに迷惑をかけないようにしてください。

関連する問題