记一次RocketMQ问题排查

一 ,起因

线上一直正常运行的系统,突然开始报错:

org.apache.rocketmq.client.exception.MQClientException: No route info of this topic: xxx

二,分析

很像是没有建立名为xxx的topic导致的,但是系统一直是正常运行的,topic都是之前建好的,不可能缺少此topic,所以断定不是缺少topic;

登录rocketmq的console后台,发现Topic栏下一个topic都没有了,这就奇怪了,不可能一瞬间所有的topic都被恶意删除了吧;

不管三七二十一,先把topic手动建一下看,显示topic建立成功,但是console界面上还是没有topic, 查看broker的日志,也是显示topic建立成功,没有任何报错,这就奇怪了,但可以肯定的是topic没建立成功或者建立之后又被删除了;

三,处理

把rocketmq所有的log文件、data目录全部中的内容全部删了,并重启rocketmq,再使用mq的测试命令进行测试:

在一个broker上发送数据,如下:

# 1.设置环境变量
export NAMESRV_ADDR=192.168.89.226:9800
# 2.发送消息
sh tools.sh org.apache.rocketmq.example.quickstart.Producer

在另一个broker上消费数据,如下:

# 1.设置环境变量
export NAMESRV_ADDR=192.168.89.226:9800
# 2.接收消息
sh tools.sh org.apache.rocketmq.example.quickstart.Consumer

结果发送时就报错了,报错为:

[PC_SYNCHRONIZED] broker busy, start flow control for a while BROKER:192.168.89.52:19200

网上查了上述错误,说是发送超时,即一条消息写入时间超过1s就会报上面的错,但是是什么导致写入超时呢?

网上给的解决办法是调整这两个参数:

sendMessageThreadPoolNums
useReentrantLockWhenPutMessage

调了之后发现依然报错;

突然灵机一动,broker busy,而且是192.168.89.52:19200这个broker busy,那把这个broker停了试试看,于是把所有broker的配置里面把这个broker去掉了,然后重启mq所有节点,发现不报错了,说明就是192.168.89.52:19200上的broker节点出问题了,但是出了什么问题了?

直到看到一个配置叫 diskMaxUsedSpaceRatio=90

说明磁盘最大使用限度是到90%,然后用df查看了一下,使用了92%了,难怪如此,

由于不知道哪些文件可以删,而且剩余空间还有100G左右,所以就将192.168.89.52:19200的配置从90改为了99,把此节点又加入集群中,希望可以多用一段时间,结果加进去还是报错,说明改成99根本没用,最后还是删了一些大文件才可以了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值