rabbtmq性能调优

1 JVM层面

1.1 监控暂停

rocketmq-console是官方提供的一个web项目,可以产看rocketmq数据和执行一些操作。但是监控界面没有权限控制,并且还有一些消耗性能的查询

操作,因此建议关闭。

1.2 消除偏向锁

在Rocketmq中,都是多线程执行的,所以竞争比较激烈,建议把偏向锁取消,避免没有必要的开销。

-XX:-UseBiasedLocking

 1.3 垃圾回收参数

Rocketmq推荐使用G1垃圾回收器。

-Xms8g -Xmx8g -Xmn4g -XX:+UseG1GC

这里设置堆的大小时8g内存,新生代是4g内存,如果有48g内存,可以设置堆内存为20g,新生代为10g,但是要保留表的操作系统内存。

-XX:G1HeapRegionSize=16m

region默认的大小时2m,这里我们设置为16m,不然会导致region数量过多。

-XX:G1ReservePercent=25

这里表示,在G1管理的老年代里预料25%的空闲内存,保证新生代对象晋升到老年代的时候有足够的空间。

-XX:initiatingHeapOccupancyPercent=30

这里表示,当堆内存的使用率达到30%之后,就会自动启动G1的并发垃圾回收,开始尝试回收一些垃圾对象。

2 操作系统层面

2.1 基本参数

vm.overcommit_memory=1

当为0时,当用户申请内存的时候,内核会去检查是否有这么大的内存空间。

当为1时,内核始终认为,有足够大的内存空间,直到它用完了为止。

当为2时,内核禁止任何形式的过量分配内存。

vm.swappiness=10

swappiness=0,仅在内存不足的情况下,当剩余空闲内存低于vm.min_free_kbytes limit时,使用交换空间。

swappiness=1,内核版本在3.5及以上、red hat内核版本2.6.32-303及以上,进行少量的交换,而不禁用交换。

swappiness=10,当系统存在足够内存时,推荐设置为该值以提高性能。

swappiness=60,默认值。

swappiness=100,内核将积极的使用交换空间。

vm.max_max_count=655360

定义了一个进程能拥有的最多的内存区域,默认是65536。

ulimit=1000000

limit.conf设置用户能打开的最大文件数。

2.2 网卡

网络接口控制器因Ring Buffer写满导致丢包的情况很多。当业务流量过大且出现网卡丢包的时候,建议调整Ring Buffer的大小,这个大小的设置在一定程度上可以缓解丢包的情况。

2.3 关闭IRQBalance

主要功能是可以合理调配使用各个cpu核心,但是在实际使用中往往影响cpu的使用均衡,建议服务器环境中关闭。

2.4 TCP NODEALY

该算法用于对缓冲区的一定数量的消息进行自动连接。该处理过程(称为Nagling),通过减少必须发送的封包数量,提高了网络应用程序系统的效率。

(Nagle虽然解决了小封包问题,但也大致了较高的不可预测的延迟,同时降低了吞吐量。)

posted @ 2022-07-21 12:01  炫舞风中  阅读(140)  评论(0编辑  收藏  举报