ときどき、Apacheエラーログに次のように表示されます。
[error] server reached MaxClients setting, consider raising the MaxClients setting
過去にメモリ不足の問題のために意図的にMaxClientsを(60に)下げましたが、サーバーでこの制限に達したときにユーザー側で何が起こっているのかを正確に知りたいです。アクセスしているページの読み込みに時間がかかるだけですか?彼らはある種のエラーメッセージを受け取りますか?
最初は、Apacheサーバーで解放されるプロセス/スレッドが存在するまで、クライアント要求はキューに入れられます。そのため、クライアントにはページの読み込みに遅延が発生します。詳細については、 MaxClients
パラメータのドキュメント を参照してください。
バックログキューに配置されると、クライアント要求は最終的にクライアント側でタイムアウトする可能性があります。次に、ユーザーはブラウザにエラーページを表示し、サーバーが応答するのに時間がかかりすぎることを示します。たとえば、デフォルトのタイムアウト値は Firefoxでは300秒 です。または、ユーザーはタイムアウト前にリクエストをキャンセルします...
次に、サーバーがより多くのリクエストを取得し、時間内に空きプロセス/スレッドを取得できない場合、ListenBacklog
キューがいっぱいになり(デフォルトは511キューのリクエスト)、後続のリクエストはまったく処理されません。その後、ブラウザは、Webサイトが完全にダウンした場合のように、Webサイトに接続できないことをユーザーに通知します。
このバックログキューは、TCP実装でOSレベルで管理されます。Linuxでは、listen
のマニュアルページに管理方法の詳細が表示されます。別の非常に LinuxおよびBSDシステムのTCPバックログキュー に関する洞察に満ちた読み物。