mod_jk1.2.32的JK状态管理器(状态工作程序)未在Web界面上显示正确的worker状态

时间:2015-04-15 03:26:48

标签: java apache tomcat load-balancing mod-jk

我的应用程序正在使用Apachemod-jkTomcat进行负载平衡,这可以正常使用work.properties

worker.list=workerlist
# Set properties for worker3
worker.worker3.type=ajp13
worker.worker3.host=xxxx
worker.worker3.port=xx
worker.worker3.lbfactor=4
worker.worker4.ping_mode=A
worker.worker3.socket_timeout=30
worker.worker3.reply_timeout=30000

# Set properties for worker4
worker.worker4.type=ajp13
worker.worker4.host=xxxx
worker.worker4.port=xx
worker.worker4.lbfactor=4
worker.worker4.ping_mode=A
worker.worker4.socket_timeout=30
worker.worker4.reply_timeout=30000

# Set properties for workerlist(lb)
worker.workerlist.type=lb
worker.workerlist.balance_workers=worker4,worker3
worker.workerlist.sticky_session=1

worker.list=jkstatus
worker.jkstatus.type=status

当我关闭worker4(Tomcat)时,JK Status Managerhttp://apachehost/jkstatus)的网络界面仍显示worker4位于ACT }和OK/IDLE状态,这没有任何意义,因为worker4不再可用。我在mod-jk.log中没有看到任何错误消息。 enter image description here

但是,当我将worker.properties更改为仅包含不可用的worker4并再次尝试访问时,该页面会显示ERR Satte: enter image description here

mod-jk.log显示:

[error] ajp_service::jk_ajp_common.c (2626): (worker4) connecting to tomcat failed.
[info] service::jk_lb_worker.c (1400): service failed, worker worker4 is in error state
[info] service::jk_lb_worker.c (1480): All tomcat instances are busy or in error state
[error] service::jk_lb_worker.c (1485): All tomcat instances failed, no more workers left

我的问题是:

  • 根据Tomcat网站上的Service Availablity Rating,它显示“ OK(空闲):此工作人员自上次维护平衡器后未收到任何请求。默认情况下,平衡器维护每60秒运行一次工作者应该没问题,但由于我们不需要使用它一段时间,我们无法确定。在1.2.24版之前,这种状态被称为N / A. “。我从中理解的是mod-jk本身会自动维护连接。那么,如果其中一名工人失职,为什么不JK Status Manager给我警报?维护不起作用或JK Status Manager网站无法正常工作吗?

  • 除了JK Status Manager之外,还有其他方法可以实时监控员工的状态吗?我的意思是如果一台服务器出现故障,我想马上知道。

  • 是否必须明确设置ping_mode?是否默认为“A”?日志说: [warn] jk_map_handle_duplicates::jk_map.c (446): Duplicate key 'worker.worker4.ping_mode' detected - previous value 'A' will be overwritten with 'A'.

1 个答案:

答案 0 :(得分:0)

1)如果一个Tomcat工作程序失败,则在下一次检查平衡器之前不会发生任何事情。因此显示OK / Idle。 60秒后它应该变成Err状态。

2)肯定有其他工具,该页面只是一个信息,而不是表单管理。最简单的方法是设置一个响应HTTP_200状态的servlet。您可以从外部程序检查其可用性,即使用URL对象。

3)显示该消息,因为第7行的配置中有拼写错误(worker4而不是worker3):

worker.worker4.ping_mode=A