web-dev-qa-db-ja.com

ApacheがMaxClientsに到達すると、ユーザーには何が表示されますか?

ときどき、Apacheエラーログに次のように表示されます。

[error] server reached MaxClients setting, consider raising the MaxClients setting

過去にメモリ不足の問題のために意図的にMaxClientsを(60に)下げましたが、サーバーでこの制限に達したときにユーザー側で何が起こっているのかを正確に知りたいです。アクセスしているページの読み込みに時間がかかるだけですか?彼らはある種のエラーメッセージを受け取りますか?

8
runningonplants

最初は、Apacheサーバーで解放されるプロセス/スレッドが存在するまで、クライアント要求はキューに入れられます。そのため、クライアントにはページの読み込みに遅延が発生します。詳細については、 MaxClientsパラメータのドキュメント を参照してください。

バックログキューに配置されると、クライアント要求は最終的にクライアント側でタイムアウトする可能性があります。次に、ユーザーはブラウザにエラーページを表示し、サーバーが応答するのに時間がかかりすぎることを示します。たとえば、デフォルトのタイムアウト値は Firefoxでは300秒 です。または、ユーザーはタイムアウト前にリクエストをキャンセルします...

次に、サーバーがより多くのリクエストを取得し、時間内に空きプロセス/スレッドを取得できない場合、ListenBacklogキューがいっぱいになり(デフォルトは511キューのリクエスト)、後続のリクエストはまったく処理されません。その後、ブラウザは、Webサイトが完全にダウンした場合のように、Webサイトに接続できないことをユーザーに通知します。

このバックログキューは、TCP実装でOSレベルで管理されます。Linuxでは、listenのマニュアルページに管理方法の詳細が表示されます。別の非常に LinuxおよびBSDシステムのTCPバックログキュー に関する洞察に満ちた読み物。

13
Tonin