• 记一次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

  • 相关阅读:
    APIJSON
    pinyin4j 中文转拼音
    JsonPath
    rocket-api
    SpringCloudAlibaba和SpringCloud的区别
    jar分离lib打包
    java8 forEach
    java8 CompletableFuture
    IE浏览器根证书问题
    基于Win服务的标签打印(模板套打)[转]
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/16350310.html
Copyright © 2020-2023  润新知