1

我们在生产服务器集群中部署了一个基于 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 交换来解决问题?

任何建议都将受到高度赞赏。如果我可以提供更多信息以进行故障排除,我将非常愿意这样做。

/本

4

1 回答 1

0

它闻起来很像陷入僵局。

我将验证 tomcat 连接的数量:如果这些连接也达到最大值,那么几乎 100% 确定它与应用程序或数据库相关。

发生这种情况时检查数据库中的锁。这可能会提供线索。

如果您在后端使用有状态会话 Bean,我会给它们一个很好的查看。

于 2010-06-03T11:22:38.353 回答