当前位置: 首页 > news >正文

Redis5优化-Redis

1、Redis关键参数

        a、客户端最大连接数

maxclients 60000
注意该参数受到操作系统最大文件句柄的限制(ulimit -n)

        b、响应

repl-ping-slave-period/repl-timeout
repl-timeout 60
1)、说明:slave 会每隔 repl-ping-slave-period(默认10秒)ping一次master,如果查过repl-timeout(默认60秒)都没有收到响应,就会认为Master挂掉。
2)、优化:如果 Master 明明没挂掉但被阻塞住了也会报这个错。可以适当调大 repl-timeout

        c、缓冲区

client-output-buffer-limit
client-output-buffer-limit slave 256mb 64mb 60
1)说明:客户端输出缓冲区大小。
2)、当使用主从复制时,性能压测下,数据量会急剧增长,导致从节点需要复制的数据很大,消耗时长增加。slave 没挂但被阻塞住了,比如正在 loading Master 发过来的 RDB,Master 的指令不能立刻发送给 slave,就会放在 output-buffer 中

        d、使用 lazy free 特性

lazyfree-lazy-eviction:表示当 Redis 运行内存超过 maxmeory 时,是否开启 lazy free 机制删除;
lazyfree-lazy-expire:表示设置了过期时间的键值,当过期之后是否开启 lazy free 机制删除;
lazyfree-lazy-server-del:有些指令在处理已存在的键时,会带有一个隐式的 del 键的操作,比如 rename 命令,当目标键已存在,Redis 会先删除目标键,如果这些目标键是一个 big key,就会造成阻塞删除的问题,此配置表示在这种场景中是否开启 lazy free 机制删除;
slave-lazy-flush:针对 slave(从节点) 进行全量数据同步,slave 在加载 master 的 RDB 文件前,会运行 flushall 来清理自己的数据,它表示此时是否开启 lazy free 机制删除。
建议开启其中的 lazyfree-lazy-eviction、lazyfree-lazy-expire、lazyfree-lazy-server-del 等配置,这样就可以有效的提高主线程的执行效率。

        e、内存大小及淘汰机制

maxmemory 1024*1024*1024*(物理内存*0.5)
maxmemory-policy allkeys-lru

        f、慢命令配置

slowlog-log-slower-than ,它决定要对执行时间大于多少微秒(microsecond,1秒 = 1,000,000 微秒)的查询进行记录。默认10,000
slowlog-log-slower-than=0 #记录所有命令
slowlog-log-slower-than<0 #不记录任何命令
slowlog-max-len ,它决定 slow log 最多能保存多少条日志slowlog-log-slower-than 100
slowlog-max-len 500

2、内存碎片优化

        a、内存碎片如何判断

info memory
Redis 重要内存参数解读
used_memory:Redis 已使用的内存大小,单位 Byte
used_memory_human:Redis 已使用的内存大小,单位 Mb
used_memory_rss:操作系统实际分配给 Redis 的物理内存空间,单位 Byte
used_memory_rss_human:操作系统实际分配给 Redis 的物理内存空间,单位 Mb
mem_fragmentation_ratio:Redis 当前的碎片率(减去 1 表示内存碎片比例)
mem_fragmentation_bytes:Redis 当前的碎片大小,单位 Byte

b、内存碎片率的计算公式

内存碎片率 = 已分配的内存 / 实际使用的内存
mem_fragmentation_ratio = used_memory_rss / used_memory
1 < mem_fragmentation_ratio <= 1.5 经验值一般保持在 1~1.5 之间是最合理的
mem_fragmentation_ratio > 1.5 这表明内存碎片率已经超过了 50%

c、内存碎片解决方案--空间置换

activedefrag yes #开启Redis自动内存碎片整理机制
active-defrag-cycle-max 75 #设置内存碎片清理所占用CPU时间的比例不高于75%
active-defrag-cycle-min 25 #设置内存碎片清理所占用 CPU 时间的比例不低于25%
active-defrag-threshold-lower 5 #设置启动活动碎片整理的最小碎片百分比,内存碎片率大于0.05的时候开始清理
active-defrag-threshold-upper 100 #设置内存碎片超过100%,尽最大清理
active-defrag-ignore-bytes 256mb #设置内存碎片的字节数达到256M时开始清

d、内存碎片扩展技能

memory purge #手动清理内存碎片
memory malloc-stats #内存分配情况内部统计报表

3、性能测试

a、25000个并发连接,500000个请求,检测host为127.0.0.1 端口为 6379 的 redis 服务器性能

-h 指定要进行测试的 Redis 服务器所在的主机 IP (默认 127.0.0.1)
-p 指定 Redis server 运行的端口 (默认 6379)
-a 指定与 Redis server 连接进行操作的密码 Auth
-c 指定本次测试每个指令的并行连接 Redis server 的客户端数量 (default 50)
-n 指定本次测试每个指令的请求总数 (default 100000)
-d 本次测试 set/get 数据大小,单位字节 (default 3)
./redis-benchmark -h 192.168.0.191 -p 6379 -c 10000 -n 5000000 -d 100 -a 123456

b、测试指定操作命令的性能

./redis-benchmark -t set,lpush -n 500000 -q

c、慢日志查询

slowlog get [n]:获取慢查询队列
slowlog len:可以查看当前日志的数量
slowlog reset:清空日志

注意:一定要先设置好Linux的文件句柄限制数

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Burp Suite、Wireshark与Fiddler:三款网络工具深度解析与比较
  • 【C++篇】迈入新世界的大门——初识C++(上篇)
  • JavaEE篇:多线程(1)
  • 计算机网络中用于远程访问和文件传输的不同方式
  • 数据结构入门——07堆
  • Spring Boot自动配置原理
  • 乌龟对对碰在线版
  • 第七十四:前端实现点击页面某个菜单跳转到对应的锚点功能
  • 微信怎么恢复聊天记录?轻松4招,恢复消失的聊天记录
  • OpenCv图像处理: 时域滤波与频域滤波
  • flink车联网项目:维表离线同步(第69天)
  • socks4和socks5和https代理的区别
  • KNN 图像识别
  • Rust线程模型与线程创建
  • 【高阶数据结构】图
  • ECMAScript入门(七)--Module语法
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • learning koa2.x
  • PAT A1050
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • Travix是如何部署应用程序到Kubernetes上的
  • 猴子数据域名防封接口降低小说被封的风险
  • 区块链分支循环
  • 通过npm或yarn自动生成vue组件
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 在weex里面使用chart图表
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • ​Z时代时尚SUV新宠:起亚赛图斯值不值得年轻人买?
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • #100天计划# 2013年9月29日
  • (1)SpringCloud 整合Python
  • (12)目标检测_SSD基于pytorch搭建代码
  • (6)添加vue-cookie
  • (C++哈希表01)
  • (day18) leetcode 204.计数质数
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第6节 (嵌套的Finally代码块)
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (windows2012共享文件夹和防火墙设置
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  • (一) springboot详细介绍
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • **《Linux/Unix系统编程手册》读书笔记24章**
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .NET 漏洞分析 | 某ERP系统存在SQL注入
  • .net 验证控件和javaScript的冲突问题
  • .net2005怎么读string形的xml,不是xml文件。
  • .Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter
  • []新浪博客如何插入代码(其他博客应该也可以)
  • [Android]如何调试Native memory crash issue
  • [BUUCTF]-Reverse:reverse3解析
  • [CareerCup] 6.1 Find Heavy Bottle 寻找重瓶子