在同时满足上面三项配置时,内存碎片自动整理功能才会启用 。
CPU 资源占用
MySQL:如何避免自动内存碎片整理对性能造成影响?清理的条件有了,还需要分配清理碎片占用的 CPU 资源,保证既能正常清理碎片,又能避免对 Redis 处理请求的性能影响 。
active-defrag-cycle-min 5:自动清理过程中,占用 CPU 时间的比例不低于 5%,从而保证能正常展开清理任务 。
active-defrag-cycle-max 20:自动清理过程占用的 CPU 时间比例不能高于 20%,超过的话就立刻停止清理,避免对 Redis 的阻塞,造成高延迟 。
整理力度
active-defrag-max-scan-fields 1000:碎片整理扫描到set/hash/zset/list 时,仅当 set/hash/zset/list的长度小于此阀值时,才会将此键值对加入碎片整理,大于这个值的键值对会放在一个列表中延迟处理 。
active-defrag-threshold-upper 100:内存碎片空间占操作系统分配给 Redis 的总空间比例达此阈值(默认 100%),我会尽最大努力整理碎片 。建议你调整为 80 。
1、jemalloc-bg-thread
默认配置为 jemalloc-bg-thread yes,表示启用清除脏页后台线程 。
【两万字 redis.conf 7.0 配置和原理全解,生产王者必备】2、绑定 CPU
你可以将 Redis 的不同线程和进程绑定到特定的 CPU,减少上下文切换,提高 CPU L1、L2 Cache 命中率,实现最大化的性能 。
你可以通过修改配置文件或者taskset命令绑定 。
可分为三个模块 。
- 主线程和 I/O 线程:负责命令读取、解析、结果返回 。命令执行由主线程完成 。
- bio 线程:负责执行耗时的异步任务,如 close fd、AOF fsync 等 。
- 后台进程:fork 子进程(RDB bgsave、AOF rewrite bgrewriteaof)来执行耗时的命令 。
- server_cpulist 0-7:2,I/O 线程(包含主线程)相关操作绑定到 CPU 0、2、4、6 。
- bio_cpulist 1,3,bio 线程相关的操作绑定到 CPU 1、3 。
- aof_rewrite_cpulist,aof rewrite 后台进程绑定到 CPU 8、9、10、11 。
- bgsave_cpulist 1,10-11,bgsave 后台进程绑定到 CPU 1、10、11 。
- Linux 下,使用 「numactl --hardware」 查看硬件布局,确保支持并开启 NUMA 。
- 线程要尽可能分布在 不同的 CPU,相同的 node,设置 CPU 亲和度才有效,否则会造成频繁上下文切换 。
- 你要熟悉 CPU 架构,做好充分的测试 。否则可能适得其反,导致 Redis 性能下降 。
https://segmentfault.com/a/1190000043845458
推荐阅读
- 职业教育|热血江湖手游:经典五大职业设定,公测火爆开启,两大门派争霸,谁能成为江湖第一?
- “魔兽”退场 两代玩家告别青春
- 华晨宇|有一种“差距”叫邓紫棋和华晨宇,分手5年后,两人现状天差地别
- 王思聪|王思聪与网红喝下午茶,女方被扒已婚有娃,两人关系引发猜测
- 华晨宇|华晨宇王悦伊高调秀恩爱,两人穿情侣装、戴情侣口罩,细节好浪漫
- 陈乔恩|陈乔恩和Alan晒照秀幸福,甜喊老公老婆示爱,两人越来越有夫妻相
- 林青霞|林青霞邀请作家莫言家中做客,吃水饺喝茅台,两人同龄像隔代人!
- 梦中的那片海|68岁林青霞看京剧,和大师交头接耳显亲密,两位友人都戴千万翡翠
- 王思聪|王思聪带俩美女玩剧本杀,大热天套两件T恤,同回酒店当护花使者
- 李明|女同事请吃饭,喊两位闺蜜一起,吃完准备离开就被服务员拦了下来!