记录一次ActiveMQ连接数过多问题(含解决方案)

春节假期第一天,运维同事反馈系统使用的一个ActiveMQ服务连接不上了, 频繁报错,经查看日志, 异常信息为: Could not accept connection : org.apache.activemq.transport.tcp.ExceededMaximumConnectionsException: Exceeded the maximum number of allowed client connections. See the ‘maximumConnections’ property on the TCP transport configuration URI in the ActiveMQ configuration file (e.g., activemq.xml)。
当时身边没有电脑,找其他同事先帮调大了activeMQ的连接数(activemq.xml中maximumConnections=1500)后重启服务,先恢复服务。
有时间后开始研究为什么会出现这个问题,出现问题时activeMQ配置的连接数为1000,该mq服务平时基本最多几百个连接(生产者+消费者,可通过netstat命令查看网络连接数量),正常情况下不应该出现该问题,猜测是有激增的连接或者未释放的连接导致的。询问了当时涉及的系统同事是否有调整生产者消费者连接数相关操作,反馈是都没有,那应该就是未释放的连接导致的,使用ss -aoen|grep 9203|grep ESTAB (9203为mq服务的端口号)查看连接信息,发现基本都没有timer信息,而使用sysctl -a |grep keepalive查看keepalive配置的为7200秒检查一次(net.ipv4.tcp_keepalive_time = 7200),也就是说操作系统的本身keepalive并不会检查和清理activeMQ的连接,经查找mq相关配置,在activemq.xml上配置了transport.keepalive=true后,再使用ss命令查看连接信息,已经有了timer(keepalive,120min,0)的信息,这个120min表示剩余探测时间,第一次探测,需要 net.ipv4.tcp_keepalive_time 这个时间倒计时,如果探测失败继续探测,后边会按照 net.ipv4.tcp_keepalive_intvl 这个时间值进行探测,重试tcp_keepalive_probes配置的次数。
问题解决。总结一下:
1,activemq.xml中配置transport.keepalive=true,按照系统配置的保活时间定时检测假连接,防止假连接占用连接数,到时无法接入新的连接;
2,也要考虑实际连接数情况,配置一个合理的连接数大小;

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值