ActiveMq:超过允许的最大客户端连接数

Posted

技术标签:

【中文标题】ActiveMq:超过允许的最大客户端连接数【英文标题】:ActiveMq: Exceeded the maximum number of allowed client connections 【发布时间】:2018-02-12 14:06:47 【问题描述】:

在我的 .Net 应用程序中,所有组件都在与 ActiveMQ 交互,但在处理少量消息后,它开始报错:

无法接受连接:org.apache.activemq.transport.tcp.ExceededMaximumConnectionsException: 超过允许的最大客户端连接数。”。

我在网络配置中增加了最大连接数,但它不起作用。 我听说对于这种情况,您应该使用 PooledConnectionFactory。 你们能否建议我们如何实现 PooledConnectionFactory 或者是否有其他替代方法。

提前致谢!!

【问题讨论】:

我在ActiveMQ的配置文件中配置了10个连接,只使用了2个连接。虽然我正在处理来自客户端应用程序的连接,但一段时间后出现“超出允许的最大客户端连接数”异常。无法弄清楚它在哪里消耗 10 个连接。我们可以通过任何方式检查连接服务器现在安装 ActiveMQ 的位置?? 我在我的 .Net 应用程序中使用 Apache.NMS dll,maximumConnections 设置为 1000,但在 Connector openwire 部分的 Active MQ 控制台屏幕中,我只能看到 100 个连接。那为什么我会得到这个异常。需要建议。谢谢 【参考方案1】:

首先,您可以在代理传输连接器配置中配置代理将接受多少个连接,例如在你的 activemq.xml

<transportConnectors>
  <transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000"/>
</transportConnectors>

1000 个连接应该是在 ActiveMQ 的 Apache 发行版中配置的默认限制。 除非您的限制出乎意料的低,否则您的客户端应用程序中的连接可能会泄漏,这应该很容易使用 netstat 等命令进行验证。

我不是 ActiveMQ NMS 专家,但据我所知,.NET 没有 PooledConnectionFactory

http://activemq.apache.org/nms/msdoc/1.6.0/vs2005/Output/html/N_Apache_NMS.htm

这仅适用于 Java。 前面的回答是对的,你应该尝试重新使用现有的连接到代理。连接创建被认为是一项繁重的操作。每次都重新创建连接是一种反模式,泄漏连接当然是一个错误。

【讨论】:

你能告诉我在什么情况下通常会出现这个错误,或者我需要查看哪些区域来解决这个错误。它不是定期出现,而是每周一次或两次重现。 您应该能够使用 netstat 或类似的操作系统级别命令来检查您在任何时间点与代理的连接数。如果该数量达到代理配置中配置的最大连接数限制,您将收到该错误。在此基础上,尝试找出哪些客户端可能会打开比预期更多的连接,并检查其代码以分析如何更改它们以在许多消息中重用连接。 我正在为 ActiveMQ 使用 Apache.NMS dll。我们可以检查客户端是否已达到最大连接限制。然后我们可以释放 /reset 连接吗?【参考方案2】:

在生成消息时尝试以某种方式重用您的 Connection。比如,保持一个开放的连接,而不是为每条消息打开/关闭。

Spring.NET 中提供了一个 CachingConnectionFactory,可以简化此任务。

【讨论】:

我需要在我的 ActiveMQ 所在的服务器端实现这个 CachingConnectionFactory 吗? . 无客户端。这个想法不是为每条消息重新建立一个连接,而是尽可能地重用现有的连接。来自客户。 首先我不是一次又一次地创建连接。如果出现错误,我也会处理它。通过 Spring.NET,但我无法弄清楚如何在我的应用程序中实现 CachingConnectionFactory。您是否还有其他链接可以演示此内容。

以上是关于ActiveMq:超过允许的最大客户端连接数的主要内容,如果未能解决你的问题,请参考以下文章

数据库访问超过最大连接数问题

activemq 5.10.0 支持的最大 mqtt 连接数是多少

连接池已满,超过最大连接数 解决方案

如何监控Apache性能及调整Apache的并发连接数

各位,activemq可以限制客户端连接数吗

电脑被别人盗用 总是超过最大连接数 我被迫下线 该怎么解决?