奇妙な問題に直面しています。サーバーがビジー状態であり、応答時間がリクエストあたり約 1 分 (非常に遅い) になっています。これは Tomcat の前で実行されています。xyz.com:8080 でサイトにアクセスすると、非常に高速になります (1 リクエスト/秒)。また、リクエストを Tomcat にリダイレクトする Mod_Proxy を使用しています。質問は、Apache から Tomcat にリクエストを渡す代わりに、Tomcat に直接リクエストを送信できるかどうか、または Apache で何らかの構成が必要なのかということです。
Httpd.conf ファイルは次のようになります。
ProxyPreserveHost On
ProxyPass / http://localhost:8080/ retry=1 acquire=300 timeout=60 Keepalive=On
ProxyPassReverse / http://localhost:8080/ ErrorLog /Path/To/Logs/Apache.log LogLevel warn
答え1
Apache は高速で実行されていると思いますが、Tomcat のリクエストに対してだけ遅いのでしょうか? 質問が完全に明確ではありません。Apache 自体が遅い場合は、それを確認する必要があります。ポート 80 でリッスンできるプロセスは 1 つだけなので、ポートを指定したくない場合は、Apache を経由する必要があります。または、Apache を完全に廃止し、代わりに Tomcat がポート 80 でリッスンするようにします。ただし、Apache はこれをプロキシするのに十分な速度であるはずです。
Apache 自体は高速だが、プロキシされた Tomcat リクエストに対してだけ遅い場合、私が提案できることはいくつかあります。
DNS ルックアップが遅い可能性がありますが、localhost ではまれです。localhost は hosts ファイルにあると思いますか? これを 127.0.0.1 に変更して、DNS ルックアップが不要になるようにしていただけますか?
これらすべてのオプションが必要ですか?
- ProxyPreserveHost - Tomcat はホスト名を認識する必要がありますか? 認識しない場合は、それを保存する必要はありませんか?
- retry/aquire/timeout/keepalive - これらは、プロキシが信頼できる接続上にない場合やファイアウォールの背後にある場合に使用します。Apache と Tomcat が同じサーバー上にある場合は必要ありません。
- プロキシ要求のカスタム ログ ファイルは便利ですが、私自身は使用していません。
これらがなぜ問題を引き起こすのかはわかりませんが、まだ使用していないので、まずはこれらを取り外して、状況が改善されるかどうか確認してみることをお勧めします。その後、必要であれば、1 つずつ追加し直して、どこに問題があったのかを確認します。
したがって、私はこれを簡略化して次のように置き換えます。
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0:8080/
そしてもう一度試してください。
また、mod_proxy もロードしていると思いますか? 最も単純なことが見逃されることもあります ;-)