首页 > 其他分享 >RocketMQ性能优化【实战笔记】

RocketMQ性能优化【实战笔记】

时间:2022-09-26 15:35:54浏览次数:73  
标签:实战 swappiness ratio vm 笔记 开启 内存 RocketMQ dirty

转发:https://cloud.tencent.com/developer/article/1496414

目录

一、系统优化
1.最大文件数
2.系统参数调整
二、RocketMQ性能调优
1.开启异步刷盘
2.开启堆外内存设置
3.开启文件预热
4.开启Slave读权限
5.关闭堆内存据传输

一、系统优化

1.最大文件数

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

vim /etc/security/limits.conf
# End of file
baseuser soft nofile 655360
baseuser hard nofile 655360
* soft nofile 655360
* hard nofile 655360

2.系统参数调整

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

参数说明

1.overcommit_memory

是否允许内存的过量分配
当为0的时候,当用户申请内存的时候,内核会去检查是否有这么大的内存空间
当为1的时候,内核始终认为,有足够大的内存空间,直到它用完了为止
当为2的时候,内核禁止任何形式的过量分配内存

2.drop_caches

写入的时候,内核会清空缓存,腾出内存来,相当于sync
写1的时候,会清空页缓存,就是文件
写2的时候,会清空inode和目录树
写3的时候,都清空
This is a non-destructive operation and will only free things that are completely unused.
Dirty objects will continue to be in use until written out to disk and are not freeable.
If you run "sync" first to flush them out to disk, these drop operations will tend to free more memory.

3.zone_reclaim_mode

如果为0的话,那么系统会倾向于从其他节点分配内存
如果为1的话,那么系统会倾向于从本地节点回收Cache内存多数时候

4.max_map_count

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

5.dirty_background_bytes/dirty_background_ratio

当dirty cache到了多少的时候,就启动pdflush进程,将dirty cache写回磁盘
当有dirty_background_bytes存在的时候,dirty_background_ratio是被自动计算的

6.dirty_bytes/dirty_ratio

当一个进程的dirty cache到了多少的时候,启动pdflush进程,将dirty cache写回磁盘
当dirty_bytes存在的时候,dirty_ratio是被自动计算的

7.dirty_writeback_centisecs

pdflush每隔多久,自动运行一次(单位是百分之一秒)

8.page-cluster

每次swap in或者swap out操作多少内存页为2的指数。等于0的时候,为1页;等于1的时候,为2页;等于2的时候,为4页

9.swappiness

swappiness=0 仅在内存不足的情况下,当剩余空闲内存低于vm.min_free_kbytes limit时,使用交换空间
swappiness=1 内核版本3.5及以上、Red Hat内核版本2.6.32-303及以上,进行最少量的交换,而不禁用交换
swappiness=10 当系统存在足够内存时,推荐设置为该值以提高性能
swappiness=60 默认值
swappiness=100 内核将积极的使用交换空间

二、RocketMQ性能调优

线上RocketMQ的JVM未做调优,堆内存使用8G;主要从RocketMQ配置参数方面梳理下。

1.开启异步刷盘

flushDiskType=ASYNC_FLUSH
同步刷盘TPS过低,较难满足业务发展需求

2.开启堆外内存设置

transientStorePoolEnable=true
消息写入到堆外内存,消费时从pageCache消费,读写分离,提升集群性能

3.开启文件预热

warmMapedFileEnable=true
开启文件预热,避免日志文件在分配内存时缺页中断

4.开启Slave读权限

slaveReadEnable=true
消息占用物理内存的大小通过accessMessageInMemoryMaxRatio来配置默认为40%;如果消费的消息不在内存中,开启slaveReadEnable时会从slave节点读取;提高Master内存利用率

5.关闭堆内存据传输

transferMsgByHeap默认true设置为false
Broker响应消费请求时,不必将数据重新读到堆内存再发送给客户端;直接从PageCache将数据发送给客户端

标签:实战,swappiness,ratio,vm,笔记,开启,内存,RocketMQ,dirty
From: https://www.cnblogs.com/Qing-840/p/16731088.html

相关文章

  • TypeScript学习笔记(三)—— 编译选项、声明文件
    一、编译选项与配置文件自动编译文件编译文件时,使用-w指令后,TS编译器会自动监视文件的变化,并在文件发生变化时对文件进行重新编译。示例:tscxxx.ts-w......
  • 安装rocketmq DLedger 高可用集群
    前言在RocketMQ4.5之前,RocketMQ都是采用master-slave主从架构部署,如下图,master节点负责写入消息,slave节点负责同步master节点消息。假设master-1节点有个topic-A,假设此......
  • 自然语言处理NLP(学习笔记)
       NLP的概念自然语言处理,英文NaturalLanguageProcessing,简写NLP。NLP这个概念本身过于庞大,可以把它分成“自然语言”和“处理”两部分。自然语言先来看......
  • 线段树学习笔记(基础&进阶)(一) | P3372 【模板】线段树 1 题解
    什么是线段树线段树是一棵二叉树,每个结点存储需维护的信息,一般用于处理区间最值、区间和等问题。线段树的用处对编号连续的一些点进行修改或者统计操作,修改和统计的复杂......
  • C++自学笔记
    初始化pA(){p=0;cout<<"A::A()"<<endl;}初始化列表InitializerlistA():p(0){cout<<"A::A()"<<endl;}      初始化vs赋值   赋值=默认初始化+......
  • axios学习笔记
    1axios的理解和使用1.1axios是什么前端最流行的ajax请求库react/vue官方都推荐使用axios发ajax请求文档地址1.2axios特点基于xhr+promise的异步ajax请求浏览......
  • js红宝书学习笔记(一)引用类型
    一.引用类型  ECMAScript中,引用类型是一种数据结构称之为对象定义,,引用对象不同于传统面向对象语言所支持的类和接口等基本结构 创建Object实例的两种方式:new操......
  • PADS应用笔记:Logic画原理图时设置图业大小
    问题画原理图时默认的图业太小,想换大点怎么办方法在工具->选项界面进入设置界面,在这个界面下进行设置......
  • delphi cxSplitter学习笔记
     //cxSplitter禁用移动和拖拽,只允许点击箭头按钮触发缩放(展开和收起)procedureTFraModleBase.cxSplitter3CanResize(Sender:TObject;varNewSize:Integer;varAcc......
  • PADS应用笔记:Logic画元件封装时端点无法编辑属性
    现象在画原理图元件封装时,定义的端点无法设置属性原因画逻辑时候只能定义端点,是没办法设置属性的,只有在编辑元件时才能设置属性......