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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
UPDATE_CONSUMER_OFFSET由工具mqadmin发送,几乎不可能由客户端持续时间消耗消息发送。您可以在4.9.0版本中检查代码
原回答者GitHub用户ni-ze
阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。