mod_jk 问题:Tomcat 可能未启动或正在监听错误的端口

mod_jk 问题:Tomcat 可能未启动或正在监听错误的端口

我在 Tomcat 6.0.26 上运行一些应用程序。Web 服务器前面有 Apache,它通过 mod_jk 与其通信。每隔几个小时,当我尝试访问应用程序时,浏览器就会旋转,并且不会检索任何内容。

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="*********" />

你们有人知道我遗漏了什么吗?什么会导致此类问题?

干杯康拉德

答案1

似乎在超时期限之前 Tomcat 没有收到任何响应。这可能是应用程序问题。在这种情况下,我会设置某种监控(Nagios 或其他更简单的监控),以确保在频繁的时间间隔内:

  • 应用服务器上的端口 8009 正在接受传入连接。
  • 应用服务器上的端口 8009 完全接受 AJP/1.3 请求。

如果您绘制这些测试的历史记录,您可能会发现应用程序和/或应用程序服务器存在周期性中断的问题,这最终会引导您找到根本原因。祝您好运……间歇性问题是最糟糕的。

答案2

此站点是否繁忙?也许您刚好达到 maxThreads。

答案3

谢谢你们所有的支持,我非常感激!

事实上,正如你们中的一些人所建议的那样,这是应用程序问题。这是由于 MySQL 连接池配置不正确(超时输入错误 - 因此值中有一个 0 太多了)造成的。因此应用程序耗尽了与数据库的连接,因为这些连接从未超时。

修复池配置(在我的情况下是 c3p0)解决了问题!

再次感谢!

康拉德

答案4

尝试一个简单的测试,注释掉所有的超时、重试和其他可选的内容:

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

并测试此配置。我认为其中一个超时选项应该是导致该问题的原因。

相关内容