aarch64体系结构下的OOM

OOM是由过多的消费者导致的ManagerExecutor任务

通过查看源代码,我了解到consumerManagerThreadPoolQueueCapacity有设置,但没有使用。如下所示。。。。。

this.consumerManagerThreadPoolQueue = new LinkedBlockingQueue(this.brokerConfig.getConsumerManagerThreadPoolQueueCapacity()); .... this.consumerManageExecutor = Executors.newFixedThreadPool(this.brokerConfig.getConsumerManageThreadPoolNums(), new ThreadFactoryImpl( "ConsumerManageThread_"));

我想知道为什么要使用无边界队列。有什么特殊的设计吗?

顺便说一句,这个问题发生在aarch64体系结构下。在AMD架构下不存在这样的问题。

JVM:

-XX:+UseG1GC -XX:G1HeapRegionSize=16m -XX:G1ReservePercent=25 -XX:InitiatingHeapOccupancyPercent=30 -XX:SoftRefLRUPolicyMSPerMB=0 -XX:SurvivorRatio=8 -verbose:gc -Xloggc:/dev/shm/mq_gc_%p.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCApplicationStoppedTime -XX:+PrintAdaptiveSizePolicy -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=30m -XX:-OmitStackTraceInFastThrow -XX:+AlwaysPreTouch -XX:MaxDirectMemorySize=1073741824 -XX:-UseLargePages -XX:-UseBiasedLocking -Djava.ext.dirs=/opt/jre/jre/lib/ext:/opt/rocketmq/bin/../lib -Xms2g -Xmx2g -Xmn1g -Drocketmq.broker.rebalance.lockMaxLiveTime=7000 -cp .:/opt/rocketmq/bin/../conf: org.apache.rocketmq.broker.BrokerStartup -c /opt/rocketmq/conf/broker.conf

原提问者GitHub用户ledefe

展开
收起
芬奇福贵 2023-05-26 10:47:34 107 分享 版权
1 条回答
写回答
取消 提交回答
  • UPDATE_CONSUMER_OFFSET由工具mqadmin发送,几乎不可能由客户端持续时间消耗消息发送。您可以在4.9.0版本中检查代码

    原回答者GitHub用户ni-ze

    2023-05-26 17:14:18
    赞同 展开评论

阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。

还有其他疑问?
咨询AI助理