`
m635674608
  • 浏览: 5027509 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

RocketMq broker硬盘空间不足的问题

 
阅读更多

1、问题来源:

压测环境是两台namesever,两台broker master,分别是10.255.255.142(broker-b)和10.255.255.151(broker-a),从监控上看151从2015-3-13后就没收到过消息。

测试环境两天master,总共的TPS是4000左右,消息大小是2K,

 

2、寻找问题点:

1、在eclipse环境连接压测环境,发现消息只发送到broker-b上,没有发送到broker-a上面。

2、怀疑是producer没有连接上broker-a,用netstat命令查看broker-a的连接,producer连接上了broker-a

3、怀疑producer从nameserver没有获取到broker-a上面的消息队列,使用MessageQueueSelector发现nameserver返回了broker-a的消息队列。

4、只往broker-a的消息队列上发送消息,报如下错误

[java] view plain copy在CODE上查看代码片派生到我的代码片
  1. com.alibaba.rocketmq.client.exception.MQBrokerException: CODE: 14  DESC: service not available now, maybe disk full, CL:  0.87 CQ:  0.87 INDEX:  0.87, maybe your broker machine memory too small.  
  2. For more information, please visit the url, https://github.com/alibaba/RocketMQ/issues/64  
  3.     at com.alibaba.rocketmq.client.impl.MQClientAPIImpl.processSendResponse(MQClientAPIImpl.java:492)  
  4.     at com.alibaba.rocketmq.client.impl.MQClientAPIImpl.sendMessageSync(MQClientAPIImpl.java:398)  
  5.     at com.alibaba.rocketmq.client.impl.MQClientAPIImpl.sendMessage(MQClientAPIImpl.java:379)  
  6.     at com.alibaba.rocketmq.client.impl.producer.DefaultMQProducerImpl.sendKernelImpl(DefaultMQProducerImpl.java:698)  
  7.     at com.alibaba.rocketmq.client.impl.producer.DefaultMQProducerImpl.sendSelectImpl(DefaultMQProducerImpl.java:877)  
  8.     at com.alibaba.rocketmq.client.impl.producer.DefaultMQProducerImpl.send(DefaultMQProducerImpl.java:851)  
  9.     at com.alibaba.rocketmq.client.producer.DefaultMQProducer.send(DefaultMQProducer.java:163)  
  10.     at com.ruishenh.rocketmq.example.Producer.main(Producer.java:78)  


5、发现时硬盘不足,去broker-a上查看硬盘,硬盘还是有空间的

6、查看RocketMQ的源码,知道出现问题的地方:

DefaultMessageStore中的public PutMessageResult putMessage(MessageExtBrokerInner msg)

[java] view plain copy在CODE上查看代码片派生到我的代码片
  1. if (!this.runningFlags.isWriteable()) {  
  2.     long value = this.printTimes.getAndIncrement();  
  3.     if ((value % 50000) == 0) {  
  4.         log.warn("message store is not writeable, so putMessage is forbidden "  
  5.                 + this.runningFlags.getFlagBits());  
  6.     }  
  7.   
  8.     return new PutMessageResult(PutMessageStatus.SERVICE_NOT_AVAILABLE, null);  
  9. }  
  10. else {  
  11.     this.printTimes.set(0);  
  12. }  

RunningFlags类中的方法

[java] view plain copy在CODE上查看代码片派生到我的代码片
  1. public boolean isWriteable() {  
  2.     if ((this.flagBits & (NotWriteableBit | WriteLogicsQueueErrorBit | DiskFullBit | WriteIndexFileErrorBit)) == 0) {  
  3.         return true;  
  4.     }  
  5.   
  6.     return false;  
  7. }  

7、基本判断是硬盘不足了,让测试人员把释放一部分的硬盘空间,当硬盘空闲空间达到4G以上broker-a就能正常工作了,出问题的时候空闲的硬盘空间是2.5G

 

http://blog.csdn.net/xuhaifang_9856/article/details/44309123

分享到:
评论

相关推荐

    RocketMQ群问题整理

    12. **错误码:SERVICE_NOT_AVAILABLE**:这通常表示服务不可用,可能是服务器磁盘空间不足导致。 13. **时间点消费**:RocketMQ 支持从特定时间点回溯消费,精确到毫秒级别,可通过 MQHelper 类实现。 14. **设置...

    rocketmq可视化界面,rocketmq-console

    1. **集群管理**:展示所有集群的概览,包括各个Broker的状态、CPU使用率、磁盘空间等。 2. **主题管理**:创建、删除和修改主题,查看主题的队列分布和消息堆积情况。 3. **消费者管理**:查看消费者的订阅关系,...

    rocketmq集群搭建资源以及搭建详细步骤(全套)

    请注意,实际操作时还需要关注网络环境、磁盘空间、内存配置等硬件条件,以及安全策略、监控报警等运维方面的问题。同时,随着RocketMQ版本的更新,其配置和部署方式可能会有所变化,建议定期查阅官方文档以获取最新...

    rocketmq windows版本 安装(单机和集群) 后台服务注册

    - 监控系统资源,如CPU、内存和磁盘空间,保证服务稳定运行。 - 配置合理的消息存储策略,如删除策略、刷盘策略等。 以上就是关于RocketMQ在Windows上的安装、集群配置以及后台服务注册的详细过程。通过这些步骤,...

    rocketmq-console-ng-1.0.1.zip

    1. **集群管理**:展示RocketMQ集群的总体状态,包括各个Broker的信息,如节点健康状况、磁盘空间、网络连接等。 2. **主题与队列查看**:查看并管理RocketMQ的主题(Topic)及其分区(Queue),包括创建、删除、...

    rocketmq用户指南

    RocketMQ支持将消息存储在磁盘上,确保消息的可靠性,即使系统崩溃,消息也不会丢失。 #### 8. 消息可靠性(MessageReliability) 消息可靠性涉及到消息的传输保障,如至少一次(At least Once)和仅一次(Exactly ...

    rocketmq3.5.8

    RocketMQ提供了丰富的监控指标,如消息发送成功率、消费延迟等,有助于进行系统性能监控和问题定位。同时,可以通过调整参数优化消息发送和消费速度,以及存储空间的使用。 总结,RocketMQ 3.5.8版本作为老但稳定的...

    rocketmq-console-ng(rocketmq可视监控平台)

    3. **集群监控**:平台能够实时展示各Broker的CPU、内存使用情况,网络I/O状态,以及磁盘空间等硬件资源的使用情况。这对于监控和调整集群性能至关重要。 4. **主题与队列管理**:用户可以在Console NG中创建、删除...

    黑马rocketmq md文档

    1. **生产流程**:生产者创建消息,将消息发送到NameServer,NameServer根据主题将消息路由到对应的 Broker,Broker 将消息持久化到磁盘,并返回确认信息给生产者。 2. **消费流程**:消费者向NameServer请求主题的...

    RocketMQ用户指南--v3.2.4--new.pdf

    1. **Broker配置参数**:涉及磁盘空间管理、日志保留时间等内容。 2. **Broker集群搭建**:包括单Broker部署、主备部署等多种模式。 3. **Broker重启对客户端的影响**:通过NameServer自动重连机制减轻影响。 ### ...

    阿里RocketMQ资料

    - **容量规划**:预先评估消息量,合理规划Broker的磁盘空间和网络带宽。 - **故障恢复**:定期备份NameServer和Broker的数据,以便快速恢复。 - **版本升级**:遵循官方升级指南,逐步迁移,避免影响线上服务。 ...

    rocketMq实战(3)-console和运维

    - **Broker监控**:展示各个Broker节点的状态,包括CPU使用率、内存占用、磁盘空间等资源信息。 - **消费组监控**:跟踪消费组的消费进度,检查是否有滞后或异常消费的情况。 - **日志查看**:提供Broker和...

    RocketMQ开发指南

    **:解决Broker缓存空间不足的问题。 10. **消息堆积**:解决由于消费者处理能力有限而导致的消息积压问题。 11. **分布式事务**:如何在分布式环境中处理事务,确保数据的一致性。 12. **定时消息**:实现基于时间...

    rocketMQ可视化插件-------

    - **集群监控**:查看各个Broker节点的状态,包括CPU使用率、内存使用情况、磁盘空间等。 - **主题管理**:创建、删除和修改Topic,查看Topic的分区信息和消息存储情况。 - **消费者管理**:查看消费者的订阅关系,...

    rocketmq的可视化界面包

    - **集群监控**:通过界面,可以查看各个Broker的状态,包括磁盘空间使用情况、消息队列数量、在线Producer和Consumer等。 - **消息轨迹追踪**:跟踪消息的发送、消费过程,帮助定位问题,优化系统性能。 - **...

    rocketmq-demo

    - **性能调优**:通过调整 Broker 的队列数量、磁盘空间、网络带宽等参数,可以优化系统的性能。 6. **最佳实践** - **消息设计**:合理设计消息格式,避免携带过多业务数据,提高传输效率。 - **负载均衡**:...

    (2024)跳槽涨薪必备精选面试题.pdf

    根据提供的文件信息,我们可以归纳并深入探讨其中提及的IT领域知识点。这些知识点主要涉及软件开发、并发编程、数据库管理、网络通信以及系统架构等多个... - 减少数据从内核空间到用户空间的拷贝次数。 - 提高 I/O ...

    带你去MQ的世界旅行

    - **过载保护**:具备内存占用和磁盘空间监控机制,当资源使用超过阈值时会触发流控措施。 - **消息控制**:支持细粒度的消息生产和消费控制及状态管理。 - **预取机制**:允许一次性获取多条消息,提高消费效率。 -...

Global site tag (gtag.js) - Google Analytics