文章目录
操作系统优化
-
操作系统选择:选择Linux内核选择3.10版及以上。最好选择Centos7及以上
-
最大文件数
$ vim /etc/security/limits.conf * soft nofile 655360 * hard nofile 655360
-
系统参数调整
$ vim /etc/sysctl.conf vm.overcommit_memory=1 vm.drop_caches=1 vm.zone_reclaim_mode=0 vm.max_map_count=655360 vm.dirty_background_ratio=50 vm.dirty_ratio=50 vm.dirty_writeback_centisecs=360000 vm.page-cluster=3 vm.swappiness=1 $ sysctl -p
-
参数说明
参数 含义 overcommit_memory 是否允许内存的过量分配
overcommit_memory=0 当用户申请内存的时候,内核会去检查是否有这么大的内存空间
overcommit_memory=1 内核始终认为,有足够大的内存空间,直到它用完了为止
overcommit_memory=2 内核禁止任何形式的过量分配内存drop_caches 写入的时候,内核会清空缓存,腾出内存来,相当于 sync 。drop_caches=1 会清空页缓存
drop_caches=2 会清空
inode 和目录树 drop_caches=3 都清空zone_reclaim_mode zone_reclaim_mode=0系统会倾向于从其他节点分配内存
zone_reclaim_mode=1系统会倾向于从本地节点回收 Cache 内存max_map_count 定义了一个进程能拥有的最多的内存区域,默认为 65536 dirty_background_ratio/dirty_ratio 当 dirty cache 到了多少的时候,就启动 pdflush 进程,将 dirty cache 写回磁盘
当有 dirty_background_bytes/dirty_bytes 存在的时候,dirty_background_ratio/dirty_ratio 是被自动计算的dirty_writeback_centisecs pdflush 每隔多久,自动运行一次(单位是百分之一秒) page-cluster 每次 swap in 或者 swap out 操作多少内存页为 2 的指数 page-cluster=0 表示 1 页 page-cluster=1 表示 2 页 page-cluster=2 表示 4 页 page-cluster=3 表示 8 页 swappiness swappiness=0 仅在内存不足的情况下,当剩余空闲内存低于 vm.min_free_kbytes limit 时,使用交换空间
swappiness=1 内核版本 3.5 及以上、Red Hat 内核版本 2.6.32-303 及以上,进行最少量的交换,而不禁用交换
swappiness=10 当系统存在足够内存时,推荐设置为该值以提高性能
swappiness=60 默认值
swappiness=100 内核将积极的使用交换空间
Broker参数
-
开启异步刷盘
flushDiskType=ASYNC_FLUSH 同步刷盘TPS过低,较难满足业务发展需求。对于数据要求比较高的场景,采用同步模式
-
主从异步复制:为提高集群性能,在生成环境建议设置为主从异步复制,经过压力测试主从同步复制性能过低。
brokerRole=ASYNC_MASTER
-
开启堆外内存设置
transientStorePoolEnable=true 消息写入到堆外内存,消费时从pageCache消费,读写分离,提升集群性能 # 如果提高稳定性,可以采用如下方式 关闭堆外内存:transientStorePoolEnable=false 关闭文件预热:warmMapedFileEnable=false 开启堆内传输:transferMsgByHeap=true
-
开启文件预热