web-dev-qa-db-ja.com

LAMPスタックで、同時接続の数を制限し、その制限を超えている人に静的ページを提供するにはどうすればよいですか?

ApacheディレクティブMaxClientsListenBacklogを知っています。たとえば、100の同時接続の制限を設定しようとしています。その後、新しい接続に静的ページが提供されます。これはできますか? MaxClientsListenBacklogはその制限よりも高いか低いか?どうすればテストできますか?

3
Valentin Brasso

これが私がそれをした方法です:Xの同時リクエストを許可したいとしましょう。その後、次のYの同時リクエストがキューに残り、最初のXが終了するのを待ち、X + Yを超えるすべてのものが静的ページに提供されます:

  1. httpd.confでは、次のディレクティブを設定する必要があります。

    MaxClients X
    ServerLimit X
    ListenBacklog Y
    
  2. MySQLにrootとして記録し、max_connectionsを設定します。

    set global max_connections = X
    
  3. サーバーのパブリックルートフォルダーから.htaccessファイルを編集します。

    ErrorDocument 503 error_503.html
    
  4. Error_503.htmlが1つのリクエストで提供されることを確認してください。すべてのスタイルシートとスクリプトはこのファイルに含まれている必要があります。画像を含める場合は、 データURIスキーム を使用する必要があります。また、IEデータURIは32KiBより小さくなければならないため、画像をスライスする必要があります。

0
Valentin Brasso

ApacheがすでにMaxClientsを処理しているために着信接続を受け入れることができない場合、静的ページを提供できません。ですから、確かな証拠はありませんが、Apacheだけでこれを達成する方法がわかりません。 Apacheが接続障害を返した場合に静的ページを返す何かを、Apacheの前に置くことができるかもしれませんが、私には多くの複雑な構成のように思えます。うまくいけば、誰かが私が間違っていることを証明するために一緒にいるでしょう。

3
EightBitTony