记录一次rabbitmq集群预研的性能下降 并且应用程序出现 reply-text=TIMEOUT WAITING FOR ACK 且 channel耗尽的情况


三台服务及 安装rabbitmq 并且配置好集群

服务器配置

A 12核 内存 16G

B 4核 内存 12G

C 2核 内存 12G

查看日志发现出现 reply-text=TIMEOUT WAITING FOR ACK错误

2022-04-24 11:08:15.643 [rabbitConnectionFactory817] ERROR o.s.a.rabbit.connection.CachingConnectionFactory - Channel shutdown: clean channel shutdown; protocol method: #method(reply-code=406, reply-text=TIMEOUT WAITING FOR ACK, class-id=0, method-id=0)
2022-04-24 11:08:15.643 [rabbitConnectionFactory361] ERROR o.s.a.rabbit.connection.CachingConnectionFactory - Channel shutdown: clean channel shutdown; protocol method: #method(reply-code=406, reply-text=TIMEOUT WAITING FOR ACK, class-id=0, method-id=0)
2022-04-24 11:08:15.643 [rabbitConnectionFactory726] ERROR o.s.a.rabbit.connection.CachingConnectionFactory - Channel shutdown: clean channel shutdown; protocol method: #method(reply-code=406, reply-text=TIMEOUT WAITING FOR ACK, class-id=0, method-id=0)

当出现这个错 导致channel不能回收 直接导师 channel耗尽的问题

一开始思路是去扩充channel数量 后面发现 扩充到1w都不够用 

还是要从TIMEOUT WAITING FOR ACK 这个问题入手

参考:https://linzhiqiang.blog.csdn.net/article/details/107847165 这篇文章 可能是出现了限流 然后查看C服务器占用内存过高 由于C服务器配置太拉胯 直接踢出集群 问题解决!

总结:

1、rabbitmq集群模式 决定性能的 性能最差的那个服务器 

2、注意rabbitmq限流可能产生TIMEOUT WAITING FOR ACK 进而导致channel耗尽的情况