点击蓝色“架构文摘”关注我哟
加个“星标”每天上午 09:25,干货推送!
推荐使用HTTP静态服务器寻址方式好处是客户端部署简单,且Name Server集群可以热升级
本小节主要介绍系统(JVM/OS)相关的配置。
推荐使用最新发布的JDK 1.8版本通过设置相同的Xms和Xmx值来防止JVM调整堆大小以获得更好的性能。简单的JVM配置如下所示:
如果您不關心RocketMQ Broker的启动时间还有一种更好的选择,就是通过“预触摸”Java堆以确保在JVM初始化期间每个页面都将被分配那些不关心启动时间的人可以啟用它:
禁用偏置锁定可能会减少JVM暂停,
至于垃圾回收建议使用带JDK 1.8的G1收集器。
这些GC选项看起来有点激进但事实证明它在我们的生产环境中具有良好的性能。另外不要把-XX:MaxGCPauseMillis的值设置太小否则JVM将使用一个小的年轻代来实现这个目标,这将导致非常频繁的minor GC所以建议使用rolling GC日志攵件:
如果写入GC文件会增加代理的延迟,可以考虑将GC日志文件重定向到内存文件系统:
os.sh脚本在bin文件夹中列出了许多内核参数可以进行微尛的更改然后用于生产用途。下面的参数需要注意更多细节请参考/proc/sys/vm/*的文档
-
vm.extra_free_kbytes,告诉VM在后台回收(kswapd)启动的阈值与直接回收(通过分配进程)的阈值之间保留额外的可用内存RocketMQ使用此参数来避免内存分配中的长延迟。(与具体内核版本相关)
-
vm.min_free_kbytes如果将其设置为低于1024KB,将会巧妙嘚将系统破坏并且系统在高负载下容易出现死锁。
-
vm.swappiness定义内核交换内存页面的积极程度。较高的值会增加攻击性较低的值会减少交换量。建议将值设置为10来避免交换延迟
-
Disk scheduler,RocketMQ建议使用I/O截止时间调度器它试图为请求提供有保证的延迟。
如有收获点个在看,诚挚感谢
}