OS内核参数、JVM参数、RocketMQ核心参数的调整

OS 内核参数的调整

(1)vm.overcommit_memory

echo 'vm.overcommit_memory=1' >> /etc/sysctl.conf

将这个参数的值调整为1,意思是把所有可用的物理内存都允许分配给你,只要有内存就给你来用,这样可以避免申请内存失败
2)vm.max_map_count
会影响中间件系统可以开启的线程的数量

如果这个参数过小,有的时候可能会导致有些中间件无法开启足够的线程,进而导致报错,甚至 中间件系统挂掉。

echo 'vm.max_map_count=655360' >> /etc/sysctl.conf

(3)vm.swappiness
设置为 0 尽量别把任何一个进程放到磁盘swap区域去,尽量大家都用物理内存。
设置为 100 尽量把一些进程给放到磁盘swap区域去,内存腾出来给活跃的进程使用。
默认 60 可能会导致我们的中间件运行不活跃的时候被迫腾出内存空间然后放磁盘swap区域去。
因此通常在生产环境建议把这个参数调整小一些,比如设置为10,尽量用物理内存,别放磁盘swap区域去。

echo 'vm.swappiness=10' >> /etc/sysctl.conf

4)ulimit
大量频繁的读写磁盘文件的时候,或者是进行网络通信的时候,都会跟这个参数有关系

采用默认值,很可能 在线上会出现如下错误:error: too many openfiles

echo 'ulimit -n 1000000' >> /etc/profile

对JVM参数进行调整

在这里插入图片描述

-Xms8g -Xmx8g -Xmn4g:默认的 堆大小是8g内存,新生代 是4g内存,但是我们的 高配物理机是48g内存的
完全可以给他们 翻几倍,比如给 堆内存20g,其中 新生代给10g,甚至可以更多一些,当然要留一些内存给操作系统来用
-XX:+UseG1GC -XX:G1HeapRegionSize=16m:选用G1垃圾回收器来做分代回收,对新生代和老年代都是用G1来回收
这里把G1的region大小设置为了16m,这个因为机器内存比较多
所以region大小可以调大一些给到16m,不然用2m的region,会导致region数量过多的
-XX:G1ReservePercent=25:这个参数是说,在G1管理的老年代里预留25%的空闲内存,保证新生代对象晋升到老年代的时候有足
够空间
,避免老年代内存都满了,新生代有对象要进入老年代没有充足内存了
默认值是10%,略微偏少,这里RocketMQ给调大了一些
-XX:InitiatingHeapOccupancyPercent=30:这个参数是说,当堆内存的使用率达到30%之后就会自动启动G1的并发垃圾回收,开
始尝试回收一些垃圾对象

默认值是45%,这里调低了一些,也就是提高了GC的频率,但是避免了垃圾对象过多,一次垃圾回收耗时过长的问题

-XX:-OmitStackTraceInFastThrow:这个参数是说,有时候JVM会抛弃一些异常堆栈信息,因此这个参数设置之后,就是禁用这个
特性,要把完整的异常堆栈信息打印出来
-XX:+AlwaysPreTouch:这个参数的意思是我们刚开始指定JVM用多少内存,不会真正分配给他,会在实际需要使用的时候再分配给

所以使用这个参数之后,就是强制让JVM启动的时候直接分配我们指定的内存,不要等到使用内存的时候再分配
-XX:MaxDirectMemorySize=15g:这是说RocketMQ里大量用了NIO中的direct buffer,这里限定了direct buffer最多申请多少,
如果你机器内存比较大,可以适当调大这个值,如果有朋友不了解direct buffer是什么,可以自己查阅一些资料。
-XX:-UseLargePages -XX:-UseBiasedLocking:这两个参数的意思是禁用大内存页和偏向锁,这两个参数对应的概念每个要说清楚
都得一篇文章,所以这里大家直接知道人家禁用了两个特性即可。

最后我们做一点小的总结,RocketMQ 默认的JVM参数是采用了G1垃圾回收器,默认堆内存大小是8G

对RocketMQ核心参数进行调整

rocketmq/distribution/target/apache-rocketmq/conf/dledger

在这里主要是有一个较为核心的参数:sendMessageThreadPoolNums=16

这个参数的意思就是 RocketMQ内部用来发送消息的线程池的线程数量,默认是16

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值