web-dev-qa-db-ja.com

mod_jkの問題:Tomcatが起動していないか、間違ったポートでリッスンしている可能性があります

Tomcat6.0.26でいくつかのアプリケーションを実行しています。 mod_jkを介してWebサーバーと通信しているApacheがあります。アプリケーションブラウザにアクセスしようとすると、数時間ごとに回転するだけで、コンテンツは取得されません。

Tomcatログにはエラーは報告されていませんが、mod_jkログにそのようなエラーがあります。

[Sun Jul 04 21:19:13 2010][error] ajp_service::jk_ajp_common.c (1758): Error connecting to Tomcat. Tomcat is probably not started or is listening on the wrong port. worker=***** failed
[Sun Jul 04 21:19:13 2010][info]  jk_handler::mod_jk.c (1985): Service error=0 for worker==*****
[Sun Jul 04 21:19:13 2010][info]  ajp_connection_tcp_get_message::jk_ajp_common.c (955): Tomcat has forced a connection close for socket 46
[Sun Jul 04 21:19:13 2010][info]  ajp_connection_tcp_get_message::jk_ajp_common.c (955): Tomcat has forced a connection close for socket 46
[Sun Jul 04 21:19:13 2010][info]  ajp_connection_tcp_get_message::jk_ajp_common.c (955): Tomcat has forced a connection close for socket 46
[Sun Jul 04 21:19:13 2010][error] ajp_get_reply::jk_ajp_common.c (1503): Tomcat is down or refused connection. No response has been sent to the client (yet)
[Sun Jul 04 21:19:13 2010][error] ajp_get_reply::jk_ajp_common.c (1503): Tomcat is down or refused connection. No response has been sent to the client (yet)
[Sun Jul 04 21:19:13 2010][info]  ajp_connection_tcp_get_message::jk_ajp_common.c (955): Tomcat has forced a connection close for socket 46
[Sun Jul 04 21:19:13 2010][error] ajp_get_reply::jk_ajp_common.c (1503): Tomcat is down or refused connection. No response has been sent to the client (yet)
[Sun Jul 04 21:19:13 2010][info]  ajp_connection_tcp_get_message::jk_ajp_common.c (955): Tomcat has forced a connection close for socket 45
[Sun Jul 04 21:19:13 2010][info]  ajp_connection_tcp_get_message::jk_ajp_common.c (955): Tomcat has forced a connection close for socket 46
[Sun Jul 04 21:19:13 2010][info]  ajp_service::jk_ajp_common.c (1721): Receiving from Tomcat failed, recoverable operation attempt=0

私のワーカーは次のように構成されています。

worker.admanagonode.port=8009
worker.admanagonode.Host=*****.com
worker.admanagonode.type=ajp13
worker.admanagonode.ping_mode=A
worker.admanagonode.socket_timeout=60
worker.admanagonode.prepost_timeout=10000
worker.admanagonode.connect_timeout=10000
worker.admanagonode.connection_pool_size=200
worker.admanagonode.connection_pool_timeout=300
worker.admanagonode.retries=20
worker.admanagonode.socket_keepalive=1
worker.admanagonode.cachesize=10
worker.admanagonode.cache_timeout=600

Tomcatは、コネクタ構成で同じポート番号を持っています。

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" address="*********" />

私が欠けているアイデアを持っている人はいますか?何がそのような問題を引き起こす可能性がありますか?

乾杯コンラッド

2
Konrad

たくさんのご支援ありがとうございました!

実際には、一部の人が示唆したように、アプリケーションの問題でした。これは、MySQL接続プールの設定が正しくないことが原因でした(タイムアウトのタイプミス-したがって、値は1から0まででした)。そのため、DBへの接続がタイムアウトすることはなかったため、アプリケーションの接続が不足していました。

プーリング構成(私の場合はc3p0)を修正すると、問題が解決しました!

もう一度ありがとう!

コンラッド

1
Konrad

タイムアウト期間の前にTomcatに応答が送信されていないようです。これはアプリケーションの問題である可能性があります。この状況で私が行うことは、次のような頻繁な間隔で確認するために、ある種の監視を設定することです(Nagios、またははるかに単純なもの)。

  • アプリケーションサーバーのポート8009は、着信接続を受け入れています。
  • アプリケーションサーバーのポート8009は、AJP /1.3要求をまったく受け入れています。

これらのテストの履歴をグラフ化すると、アプリケーションやアプリケーションサーバーが定期的に停止する問題が発生する可能性があり、最終的には根本的な原因になります。幸運を祈ります...断続的な問題は最悪です。

1
Kyle Smith

これは忙しいサイトですか?たぶんあなたはちょうどmaxThreadsに到達しています。

1
Ari
worker.admanagonode.Host=*****.com

マシンはNAT上にあり、そのホスト名は外部IPに解決されますか?通常、同じネットワークで実行されているオフマシンのTomcatに特にバックエンドする場合を除いて、これは「localhost」(デフォルト)のままにします(したがって、/ etc/hostsがあります)。

Server.xmlからのコネクタアドレスについても同じことが言えます= 127.0.0.1以外に設定されていますか?なぜ?

0
user15590

簡単なテストを試して、すべてのタイムアウト、再試行、およびその他のオプションのものにコメントします。

worker.admanagonode.port=8009
worker.admanagonode.Host=*****.com
worker.admanagonode.type=ajp13

そして、この構成をテストします。このタイムアウトオプションの1つが問題の原因であると思います。

0
Maxfer