mod_jk.log ファイルに次のエラー メッセージが表示されたスパムが表示されます: jk_connect.c (593): connect to 127.0.0.1:8009 failed (errno=61)
Tomcat は正常に動作しており、Apache と Tomcat の間にファイアウォールは構成されておらず (両方とも同じマシン上で動作しています)、8009 にリスナーが存在します。コネクタは一度に数日間正常に動作し、その後、すべての新しい接続に対して上記のメッセージがログ ファイルにスパム送信され始めます。
スパムが始まったら、それを回復する唯一の方法は、まず Tomcat を再起動し、次に Apache を再起動することです。
この種の問題の原因として最も考えられるものは何でしょうか?
答え1
これには複数の理由が考えられます:
- tomcatが動作していません
- tomcat は実行されていますが、ポート 8009 のコネクタが設定されていません
- tomcat は実行されていますが、apache と tomcat 間のファイアウォールがポート 8009 のトラフィックを許可していません (この状況ではそうではないはずです)
- tomcat は実行されていますが、この IP をリッスンしていません
答え2
今週、新規インストールでまったく同じ問題が発生しました。Tomcat 5.5 インストールからファイルごとにすべてをコピーしましたが、これはまったく予想どおりに動作していたため、これは本当に不可解な状況でした。
そこで TCPView を実行したところ、AJP が TCP のポート 8009 にバインドされていないことがわかりました (ただし、TCPv6 ではバインドされていました。何ですって...)
Tomcat のそれ以降のバージョン、または isapi_redirect.dll または Tomcat5w.exe (Tomcat サービス) は「TCPv6 対応」であるようで、そこから問題が始まります。
良いニュースとしては、server.xml の「address」プロパティを IPv4 アドレスに設定できることです。例:
<Connector address="192.168.1.109" port="8080"
...ウェブサービス用
<Connector address="192.168.1.109" port="8009"
... ajp/1.3 コネクタ用
注意: アドレスを何に設定する場合でも、worker.properties ファイルの設定が同じであることを確認してください。例:
worker.ajp13w.host=192.168.1.109
...どうやらこれで全部のようです。