複数の Java Tomcat インスタンスの前でプロキシとして Apache Httpd インスタンスを使用しています。Apache は、Tomcat インスタンスのロード バランサーとして機能します。
Apacheの設定は基本的に次のようになります
<Proxy balancer://mycluster>
BalancerMember ajp://host1:8280 route=jvmRoute-8280
BalancerMember ajp://host2:8280 route=jvmRoute-8280
BalancerMember ajp://host3:8280 route=jvmRoute-8280
</Proxy>
<VirtualHost *:80>
ProxyPass / balancer://mycluster/
ProxyPassReverse / balancer://mycluster/
</VirtualHost>
これは基本的に、Tomcat インスタンスで AJP ポートが構成されている場合に機能します。リクエストはいずれかのホストに送信され、負荷は Tomcat インスタンス全体に分散されます。
ただし、ホストの 1 つが使用できない場合は常に Httpd 内で発生しているように見える非常に長い遅延が見られます。利用可能なホストの 1 つに送信し、しばらくしてから失敗したホストを試します。
mod_proxy などを設定する方法はありますか。そのようなフェイルオーバー シナリオをサポートするために Apache Httpd から、つまり、複数のホストを持ち、1 つのホストに障害が発生したときに大きな遅延を引き起こさないでしょうか? できれば、Apache はバックグラウンドで定期的にどのホストがなくなったのかをチェックし、リクエストのホストとしてではありません。
この種のことにより適しているように思われるHAProxyを見つけましたが、関連のない多くの理由で Apache に固執することを好みます。
アップデート
その間、私の問題の一部は、クライアントが接続を際限なく開いたままにしていたため、接続/スレッドが利用できなくなったことが原因であることがわかりました。
したがって、質問を次のように変更します。このような影響を最小限に抑えるには、どの構成オプションを使用しますか? つまり、この場合、多くの開いている接続を許可するか、すぐに閉じますか? そうでなければ、これは私の現在の設定で非常に簡単な DOS 攻撃のように聞こえますか?