开发者社区 > 云原生 > 消息队列 > 正文

一个rocketmq集群(2m2s)到其中一个master节点偶发出现报错,请问是什么原因?

一个rocketmq集群(2m2s)从4.7.1升级到4.9.7后启动正常,到其中一个master节点偶发出现OutOfDirectMemoryError,堆外内存限制已经设到8g还有报错,最后设到10g重启才恢复,集群负载不高总共只有500tps,配置8C16G,而且只有这1个节点有这种情况,对比了两个master节点的broker.propertis和jvm参数没有发现差异,请问是什么原因?

展开
收起
2401。 2023-07-31 13:17:42 61 0
2 条回答
写回答
取消 提交回答
  • 如果堆内存都正常 可以看下源码 或者最简单的升级到5.x版本的rocketmq,如果解决了 可能4.x的某个版本存在内存泄漏的问题。 此回答整理自钉群“群2-Apache RocketMQ 中国开发者钉钉群”。

    2023-08-01 13:41:18
    赞同 展开评论 打赏
  • OutOfDirectMemoryError错误表示堆外内存不足。在RocketMQ中,堆外内存主要用于存储消息的序列化数据和发送/接收网络IO缓冲区。

    根据你提供的信息,有以下一些可能导致该问题的原因:

    1. 系统环境配置:检查操作系统的max direct memory size参数是否已正确设置。这个参数表示堆外内存最大可用大小。确保参数足够大以满足RocketMQ的需求。

    2. JVM参数配置:确保所有的RocketMQ节点使用相同的JVM参数配置。特别关注堆外内存的相关参数,如-XX:MaxDirectMemorySize。确认这些参数在所有节点上都被正确设置,并且没有差异。

    3. 版本升级问题:从4.7.1升级到4.9.7之后,某些配置项可能发生了变化,包括默认值或者与堆外内存相关的配置。请确保所有节点都已按照新版本文档中的建议进行配置。

    4. 消息发送速率过快:尽管你提到集群负载不高(总共只有500tps),但仍然需要考虑具体的消息发送和消费情况。如果存在突发的消息发送速率或者某些消费者处理速度较慢,可能会导致堆外内存不足。

    5. 硬件资源限制:检查服务器硬件资源是否足够支持,包括内存、磁盘和网络带宽等。

    2023-07-31 14:17:10
    赞同 展开评论 打赏

多个子产品线联合打造金融级高可用消息服务以及对物联网的原生支持,覆盖多行业。

相关产品

  • 云消息队列 MQ
  • 热门讨论

    热门文章

    相关电子书

    更多
    行业实践:RocketMQ 业务集成典型行业应用和实践 立即下载
    技术揭秘:RocketMQ 5.0 云原生架构升级之路 立即下载
    RocketMQ Summit 2022 开源生态发展 立即下载