记一次rabbitmq 消息不能接收故障的处理
问题
当时比较怪异,现象是通过rabbitmq 的management可以发送消息(消息内容比较小,很简单的),但是通过代码没有任何报错
但是消息就是不能看到(management 界面)
排错处理
开始以为是代码处理问题,但是没有异常日志,也怀疑因为代码发布造成队列错误造成消息写入错误,我一般的此类问题的方式
就是基于arthas 观察调用链(同时也可以看到输入以及输出)
对应spring boot amqttemplate 的处理(以下命令没啥多大问题,因为业务比较小,可以执行运行)
watch org.springframework.amqp.rabbit.core.RabbitTemplate convertAndSend '{params,returnObj}' -x 5
但是通过测试观测,数据是正确的(输入以及输出,而且就是没有一样)说明mq 的监听服务的协议处理是正常的
当时就有点费事了,然后登录mq 服务器,查看mq 日志,观测系统的cpu 以及内存情况,发现都是正常的,然后习惯性的看了下磁盘
空间,很不好的是磁盘100%了,可用20多M了,问题应该就是这个了(mq 数据需要落盘,磁盘100%肯定是会有问题的)
解决
核心就是清理磁盘空间,比如日志的一些其他不需要的
造成问题的原因
以为新版本mq 支持基于prometheus 的报警,因为服务器的特殊性,我们了vmagent 进行数据的推送,但是prometheus 存储服务异常了
vmagent 会将没有发送的数据落盘然后会进行重试,然后就占满了磁盘空间了。。。
复盘
系统的监控很重要,同时对于监控的监控也很重要,多管齐下才能保证系统的可靠以及稳定
参考资料
https://www.rabbitmq.com/disk-alarms.html
https://www.rabbitmq.com/logging.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2019-06-07 dbt 0.13.0 新添加特性sources 试用
2019-06-07 apisix 基于openresty 的api 网关
2018-06-07 deno学习二 基本代码
2018-06-07 deno学习一 安装试用&&几个问题解决
2014-06-07 Selenium(ThoughtWorks公司开发的web自动化测试工具)