我们在生产服务器集群中部署了一个基于 Wicket 的 Java 应用程序,使用 Apache (2.2.3) 和 mod_jk (1.2.30) 作为负载平衡组件,带有粘性会话,Jboss 5 作为 Java 应用程序的应用程序容器。
我们在生产环境中始终看到一个问题,即我们的 Apache 和 Jboss 之间的 AJP 队列(如 JMX 控制台所示)充满了请求,以至于应用程序服务器不再接受任何新请求。在查看所有涉及的系统组件(整体流量、负载数据库、进程列表数据库、所有集群应用程序服务器节点的负载)时,没有任何迹象表明存在容量问题,这可以解释为什么调用在 AJP 队列中停滞不前。相反,所有系统都显得足够空闲。
到目前为止,我们对该问题的唯一补救措施是重新启动应用服务器和负载均衡器,这只是偶尔清除 AJP 队列。
我们试图弄清楚为什么队列会填满,即使系统没有处于高负载下,也没有任何呼叫返回给最终用户。
有没有其他人遇到过类似的问题?
我们是否应该监控任何其他系统指标来解释排队行为?
这可能是一个 mod_jk 问题吗?如果是这样,是否建议将 mod_jk 与 mod_cluster 交换来解决问题?
任何建议都将受到高度赞赏。如果我可以提供更多信息以进行故障排除,我将非常愿意这样做。
/本