Apache/mod_jk 模块在运行一段时间后无法连接 jboss

Posted

技术标签:

【中文标题】Apache/mod_jk 模块在运行一段时间后无法连接 jboss【英文标题】:Apache/mod_jk module fail to connect jboss after running some time 【发布时间】:2012-10-15 05:04:31 【问题描述】:

我使用Apache/mod_jk module 连接jboss。但是运行一段时间后,出现了问题。

阿帕奇:2.2.22 mod_jk:1.2.37 Jboss:5.1.0 GA(集群环境) 操作系统:CentOS 5.2 x86_64 JDK:1.6.0_30-b12

这是 mod_jk.log 的一部分

[Thu Oct 18 15:21:35.044 2012] [26272:47208100643936] [error] ajp_connect_to_endpoint::jk_ajp_common.c (1035): (node1) cping/cpong after connecting to the backend server failed (errno=110)
[Thu Oct 18 15:21:35.044 2012] [26272:47208100643936] [error] ajp_send_request::jk_ajp_common.c (1630): (node1) connecting to backend failed. Tomcat is probably not started or is listening on the wrong port (errno=110)
[Thu Oct 18 15:22:35.643 2012] [26272:47208100643936] [error] ajp_connect_to_endpoint::jk_ajp_common.c (1035): (node1) cping/cpong after connecting to the backend server failed (errno=110)
[Thu Oct 18 15:22:35.643 2012] [26272:47208100643936] [error] ajp_send_request::jk_ajp_common.c (1630): (node1) connecting to backend failed. Tomcat is probably not started or is listening on the wrong port (errno=110)
[Thu Oct 18 15:22:35.643 2012] [26272:47208100643936] [error] ajp_service::jk_ajp_common.c (2626): (node1) connecting to tomcat failed.
[Thu Oct 18 15:23:36.143 2012] [26272:47208100643936] [error] ajp_connect_to_endpoint::jk_ajp_common.c (1035): (node2) cping/cpong after connecting to the backend server failed (errno=110)
[Thu Oct 18 15:23:36.143 2012] [26272:47208100643936] [error] ajp_send_request::jk_ajp_common.c (1630): (node2) connecting to backend failed. Tomcat is probably not started or is listening on the wrong port (errno=110)
[Thu Oct 18 15:24:36.742 2012] [26272:47208100643936] [error] ajp_connect_to_endpoint::jk_ajp_common.c (1035): (node2) cping/cpong after connecting to the backend server failed (errno=110)
[Thu Oct 18 15:24:36.742 2012] [26272:47208100643936] [error] ajp_send_request::jk_ajp_common.c (1630): (node2) connecting to backend failed. Tomcat is probably not started or is listening on the wrong port (errno=110)
[Thu Oct 18 15:24:36.742 2012] [26272:47208100643936] [error] ajp_service::jk_ajp_common.c (2626): (node2) connecting to tomcat failed.
[Thu Oct 18 15:24:36.742 2012] [26272:47208100643936] [error] service::jk_lb_worker.c (1485): All tomcat instances failed, no more workers left

http.conf 的一部分:

JkWorkersFile conf/workers.properties
JkMountFile conf/uriworkermap.properties
JkLogFile logs/mod_jk.log
JkLogLevel warn

workers.properties:

 worker.list=loadbalancer,loadbalancer_2,status
 worker.node1.port=8009
 worker.node1.host=10.123.76.6
 worker.node1.type=ajp13
 worker.node1.lbfactor=1

 worker.node2.port=8009
 worker.node2.host=10.123.76.4
 worker.node2.type=ajp13
 worker.node2.lbfactor=1

 worker.loadbalancer.type=lb
 worker.loadbalancer.balance_workers=node1,node2

 worker.loadbalancer.sticky_session=true
 worker.loadbalancer.sticky_session_force=false

 worker.loadbalancer_2.type=lb
 worker.loadbalancer_2.balance_workers=node1,node2
 worker.loadbalancer_2.sticky_session=true
 worker.loadbalancer_2.sticky_session_force=false

注意:Jboss 工作正常。 telnet jboss 8009 正常。如果你重新启动 jboss,它会再次工作。但是如果你重启apache就没有用了。

有人遇到过这个问题吗?

【问题讨论】:

为什么要设置两个相同的负载均衡器? 【参考方案1】:

您是否在 server.xml 文件中设置了正确的 jvmRoute?

jboss-as/server/$profile/deploy/jbossweb.sar/server.xml

确切的线应该是这样的:

<Engine name="jboss.web" defaultHost="localhost" jvmRoute="node1">

在第二台服务器上会有 jvmRoute="node2"。

【讨论】:

【参考方案2】:

我认为为 ajp 连接器设置连接超时可以解决您的问题。 这样的设置应该可以工作

<Connector port="8009" address="$jboss.bind.address" protocol="AJP/1.3"
         emptySessionPath="true" enableLookups="false" redirectPort="8443" maxThreads="1000" connectionTimeout="60000000" />

你在 server.xml 中配置这个

您可以在官方文档http://docs.jboss.org/jbossweb/latest/config/ajp.html 中阅读有关此属性的更多文档

【讨论】:

请问connectionTimeout是什么意思? check docs.jboss.org/jbossweb/latest/config/ajp.html connectionTimeout:此连接器在接受连接后等待显示请求 URI 行的毫秒数。默认值是无限的(即没有超时)。可能会发生连接“挂起”并且不会超时,并且在连接池已满后将填充连接池(由最大线程控制),它不会接受任何新连接并且服务器将“陈旧”【参考方案3】:

请按以下方式解决问题。 1.从不同的浏览器点击URL而不重新启动网络服务器。(如果它不工作下面的解决方案将适用于你)

请检查两个 JBoss 配置必须启用 8009(AJP) 端口。在您的情况下,两个不同的物理服务器中有两个实例。必须配置上述端口。它是默认设置。检查是否误改。基本上这对应于 http 偏移量 0。

【讨论】:

以上是关于Apache/mod_jk 模块在运行一段时间后无法连接 jboss的主要内容,如果未能解决你的问题,请参考以下文章

在 ssl VirtualHost 中设置 Apache mod_jk

Tomcat集群搭建超详细(apache+mod_jk+tomcat)

关闭 NSWindow 后无响应的 UI 元素

极品飞车16运行出错,求高手帮忙解决

excel运行宏后无结果也不提示错误时啥原因?

安装creo5.0时双击setup.exe管理员运行后无反应解决日志