记录 RocketMQ JVM 配置

原文链接: https://juejin.im/post/5ce60870518825314b6d6341

JVM 配置项

RocketMQ 建议使用JDK1.8的最新发布版本,server编译器和8G的堆内存。设置Xms和Xmx值相同,避免JVM反复调整堆内存大小,以此来获得更好的性能。配置如下:

-server -Xms8g -Xmx8g -Xmn4g
复制代码

-Xmn是JVM中新生代的大小。

如果不关心 RocketMQ broker 的启动时间,预先接触Java堆以确保在JVM初始化期间分配每个页面是更好的选择。配置如下:

-XX:+AlwaysPreTouch
复制代码

禁用偏向锁可能会减少JVM暂停次数,配置如下:

-XX:-UseBiasedLocking
复制代码

垃圾回收,推荐使用JDK1.8 的G1 垃圾收集器。推荐如下:

-XX:+UseG1GC -XX:G1HeapRegionSize=16m -XX:G1ReservePercent=25 -XX:initatingHeapOccupancyPercent=30
复制代码

这些GC选项看起来有点激进,但事实证明它在我们的生产环境中具有良好的性能。

-XX:MaxGCPauseMillis的值不能太小,否则JVM会使用很小的年轻代来实现这个目标,这将会导致非常频繁的小GC。推荐滚动输出GC日志,配置如下:

-XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=30m
复制代码

如果写GC文件会增加 broker 的延迟,可以考虑将GC日志文件输出到文件中。配置如下:

-Xloggc:/dev/shm/mq_gc_%p.log
复制代码

你可能感兴趣的:(记录 RocketMQ JVM 配置)