测试环境反馈行云系统上所有的消息队列都不消费了,看了一下Connections连接,发现全部都发生阻塞了,导致线上的队列堆积。
还好只是测试环境,开始不紧不慢开始排查问题,(这里提一句,如果是线上环境优先恢复生产然后再排查问题)
经检查生产者和消费者都良好,这就纳闷了,难道是MQ机器的问题?拉上了运维老大哥一起排查。
拉mq日志/var /log/rabbitmq/ 通过错误日志发现
vm_memory_high_watermark clear. Memory used:383597048 allowed:385616281 |
好了,mq的运行内存超过限制导致出现的问题
这时候借助万能的搜索引擎了,上网翻资料
因为RabbitMQ服务器在启动时会计算系统内存总大小。然后会根据vm_memory_high_watermark参数指定的百分比,进行控制.可通过命令 rabbitmqctl set_vm_memory_high_watermark fraction 动态设置。默认下,vm_memory_high_watermark的值为0.4,当RabbitMQ使用的内存超过40%时,系统会阻塞所有连接。一旦警报解除(消息被消费者取走,或者消息被写到硬盘中),系统重新恢复工作。32位系统的单进程内存使用最大为2G,即使系统有10G,那么内存警报线为2G*40%.
解决方法
将vm_memory_high_watermark值上调
- 本文标题: rabbitmq阻塞异常排查
- 文章作者: sherryriver(木木三可)
- 发布时间: 2019.08.16
- 本文链接: https://sherryriver.github.io/2019/08/16/rabbitmq阻塞异常排查/
- 许可协议: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。