ApacheがMaxClientsに到達したときにユーザーは何を見るのですか?


8

ときどき、Apacheエラーログで次のことがわかります。

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

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


1
このためのテストを構築するのは難しいことではないでしょう。テストサーバーで、MaxClientsを1に下げてみて、複数のウィンドウまたはタブで更新するとどうなるかを確認してください。
ghoti 2015

間違いなく-私はそれをする前に誰かが知っていることを望んでいた。Apacheのドキュメントに情報がありません。
ononplants 2015

回答:


13

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

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

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

このバックログキューは、TCP実装のOSレベルで管理されます。Linuxでは、listenmanページに管理方法の詳細が表示されます。LinuxおよびBSDシステムでのTCPバックログキューについてのもう1つの非常に洞察満ちた資料です


正確に私が知る必要があったもの。ありがとうございました!ListenBacklogキューにあるプロセスの数を確認する方法があるかどうかを偶然知っていますか?
runningonplants 2015

1
このバックログキューは、tcpスタックの一部として、OSによって管理されます。見ていlistenmanページを。このキューの内容を直接確認する方法があるかどうかはわかりません。また、このSO質問も参照してください。回答にさらに情報を追加しました。
Tonin
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.