Redis性能分析思路
Redis性能分析有几个大的方向。分别是
(1)基准对比
(2)配置优化
(3)数据持久化
(4)键值优化
(5)缓存淘汰
(6)Redis集群
基准对比
在没有业务实例运行的情况下,在服务器上通过测试Redis 实例的基准性能来对比有实例运行情况下的redis性能。通过以下步骤来判断Redis实例是否变慢:
1.为避免业务服务器到 Redis 服务器之间的网络延迟,可以直接在 Redis 服务器测试实例的延迟
redis-cli -h 127.0.0.1 -p 6379 --intrinsic-latency 60

2.测试时间段内Redis的最小、最大和平均时延
redis-cli -h 127.0.0.1 -p 6379 --latency-history -i 1

3.对比实例运行的redis延迟
1Gb/s的网络的延迟差不多是200us,如果指令的响应延迟明显大于200us,可能是请求队列过多导致。此时total_commands_processed增长会很快
如果是个别指令很慢导致的延迟增加,那么可以看到total_commands_processed下降或者不变,而Redis性能却在明显下降
如果实例的延迟时间是Redis基准性能时间的1.5-2倍以上,可以认为这个Redis实例性能比较差
配置优化
linux配置优化
vm.overcommit_memory
Redis是内存数据库,优先使用内存。设置overcommit 为1是为了让 fork 在低内存下也可以执行成功。
0 内存不足时需要检查
1 允许超量使用内存
2 内存使用不能超过swap+50%,50%是overcommit-ration默认值
禁用thp
Linux支持大内存页(2MB)分配,默认开启。开启时可以降低 fork 子进程的速度,但 fork 操作之后,每个内存页从原来 4KB 变为 2MB,会大幅增加内存消耗,同时拖慢写操作时间,产生大量写操作慢查询。因此 Redis 日志中需要禁用此特性
echo never > /sys/kernel/mm/transparent_hugepage/enabled
Redis配置优化
daemonize no
Redis 默认不是以守护进程的方式运行,可以通过该配置项修改,使用 yes 启用守护进程
timeout 300
当客户端闲置多长秒后关闭连接,如果指定为 0 ,表示关闭该功能
loglevel notice
指定日志记录级别,Redis 总共支持四个级别:debug、verbose、notice、warning,默认为 notice
logfile stdout
日志记录方式,默认为标准输出,如果配置 Redis 为守护进程方式运行,而这里又配置为日志记录方式为标准输出,则日志将会发送给 /dev/null
databases 16
设置数据库的数量,默认数据库为0,可以使用SELECT 命令在连接上指定数据库id
#RDB 持久化
save 900 1 #在900秒(15分钟)之后,如果至少有1个key发生变化,则dump内存快照。
save 300 10 #在300秒(5分钟)之后,如果至少有10个key发生变化,则dump内存快照。
save 60 10000 #在60秒(1分钟)之后,如果至少有10000个key发生变化,则dump内存快照。
#AOF持久化配置
appendonly yes #开启AOF持久化,默认为no
appendfilename "appendonly.aof" #指定更新日志文件名
appendfsync always #每次有数据修改发生时都会写入AOF文件
#appendfsync everysec #每秒钟同步一次,该策略为AOF的缺省策略
#appendfsync no #从不同步。高效但是数据不会被持久化
rdbcompression yes
指定存储至本地数据库时是否压缩数据,默认为 yes,Redis 采用 LZF 压缩。如果为了节省 CPU 时间,可以关闭该选项,但会导致数据库文件变的巨大
dbfilename dump.rdb
指定本地数据库文件名,默认值为 dump.rdb
requirepass foobared
Redis 连接密码,如果配置了连接密码,客户端在连接 Redis 时需要通过 AUTH <password> 命令提供密码,默认关闭
maxclients 128
设置同一时间最大客户端连接数,默认无限制。Redis 可以同时打开的客户端连接数为 Redis 进程可以打开的最大文件描述符数,如果设置 maxclients 0,表示不作限制。当客户端连接数到达限制时,Redis 会关闭新的连接并向客户端返回 max number of clients reached 错误信息
maxmemory <bytes>
指定 Redis 最大内存限制,Redis 在启动时会把数据加载到内存中。达到最大内存后,Redis 会先尝试清除已到期或即将到期的 Key,当此方法处理后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读操作。
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
指定在hash或者list超过一定的数量或者某一临界值时,采用特殊的算法
tcp-backlog
超过最大连接数时,由backlog持有
slowlog-log-slower-than xxxms
执行时间慢于xxx毫秒的命令计入Slow Log
slowlog-max-len xxx
#Slow Log的长度,即最大纪录多少条Slow Log
订阅查看更多内容

Redis性能分析思路的更多相关文章
- 你知道CPU结构也会影响Redis性能吗?
啦啦啦,我是卖身不卖艺的二哈,ε=(´ο`*)))唉错啦(我是开车的二哈),我又来了,铁子们一起开车呀! 今天来分析下CPU结构对Redis性能会有影响吗? 在进行Redis性能分析的时候,通常我们会 ...
- 关于redis性能问题分析和优化
一.如何查看Redis性能 info命令输出的数据可以分为10个分类,分别是: server,clients,memory,persistence,stats,replication,cpu,comm ...
- redis性能优化、内存分析及优化
redis性能优化.内存分析及优化 1.优化网络延时 2.警惕执行时间长的操作 3.优化数据结构.使用正确的算法 4.考虑操作系统和硬件是否影响性能 5.考虑持久化带来的开销 5.1 RDB 全量持久 ...
- Linux性能分析:生产环境服务器变慢,诊断思路和性能评估
Linux性能分析:生产环境服务器变慢,诊断思路和性能评估 一.整机:top 二.CPU:vmstat 所有CPU核信息 每个进程使用CPU的用量分解信息 三.内存:free 四.硬盘:df 五.磁盘 ...
- 【性能测试】常见的性能问题分析思路(二)案例&技巧
上一篇介绍了性能问题分析的诊断的基本过程,还没看过的可以先看下[性能测试]常见的性能问题分析思路-道与术,精炼总结下来就是,当遇到性能问题的时候,首先分析现场,然后根据现象去查找对应的可能原因,在通过 ...
- redis常用性能分析命令
一.连接 src/redis-cli -h 10.20.137.141 -p 6379 >auth 123456789 src/redis-cli -h 10.20.137.141 -p 637 ...
- Redis源代码分析(十三)--- redis-benchmark性能測试
今天讲的这个是用来给redis数据库做性能測试的,说到性能測试,感觉这必定是高大上的操作了.redis性能測试.測的究竟是哪方面的性能,怎样測试,通过什么指标反映此次測试的性能好坏呢.以下我通过源代码 ...
- Redis 性能问题分析
在一些网络服务的系统中,Redis 的性能,可能是比 MySQL 等硬盘数据库的性能更重要的课题.比如微博,把热点微博[1],最新的用户关系,都存储在 Redis 中,大量的查询击中 Redis,而不 ...
- enode框架step by step之框架要实现的目标的分析思路剖析1
enode框架step by step之框架要实现的目标的分析思路剖析1 enode框架系列step by step文章系列索引: 分享一个基于DDD以及事件驱动架构(EDA)的应用开发框架enode ...
随机推荐
- leetcode5225最大相等频率
题目 正整数数组nums,找到满足条件的最长前缀,返回其长度.该前缀满足:删除一个元素后,剩下的每个数字出现的次数相同. ps:如果删除后没有元素存在,也可以认为每个数字有相同的次数. 数组长度:[2 ...
- 「实用」打造自我感觉非常漂亮的Mac终端
背景 (今天我是一个美妆博主) 突然发现自己使用的iterm2终端样式有些朴素,为了让她看起来花枝招展的,我决定给她打扮打扮.毕竟每天面对她的时间比对象还多-- 效果对比 因为每个人的喜好都不一样,所 ...
- A Tutorial on Energy-Based Learning
目录 概 主要内容 损失函数 Energy Loss Generalized Perceptron Loss Generalized Margin Loss Hinge Loss Log Loss L ...
- kotlin+springboot+mybatis-puls+mysql搭建gradle-web工程
kotlin+springboot+mybatis-puls+mysql搭建web工程 前段时间研究了spring security及OAuth2系列之后,本来打算研究spring的,但是部门发生 ...
- [算法笔记-题解]问题 C: 例题4-3 比较交换3个实数值,并按序输出
问题 C: 例题4-3 比较交换3个实数值,并按序输出 [命题人 : 外部导入] 时间限制 : 1.000 sec 内存限制 : 12 MB 题目描述 从键盘输入3个实数a, b, c,通过比较交换, ...
- Hive on Spark和Spark sql on Hive,你能分的清楚么
摘要:结构上Hive On Spark和SparkSQL都是一个翻译层,把一个SQL翻译成分布式可执行的Spark程序. 本文分享自华为云社区<Hive on Spark和Spark sql o ...
- java知识点链接
业务复杂=if else?刚来的大神竟然用策略+工厂彻底干掉了他们! 细思极恐-你真的会写java吗? [解锁新姿势] 兄dei,你代码需要优化了 消灭 Java 代码的"坏味道" ...
- Hadoop组件启停命令和服务链接汇总
1.启停命令 Zookeeper zkServer.sh start zkServer.sh stop/status/restart zkCli.sh -server IP:Port Hadoop(h ...
- elasticsearch之警惕inner hits的性能问题
一.inner hits简介 elasticsearch提供了nested数据类型来处理主子文档的问题,可以解决子文档字段被分裂平铺导致字段之间失去了整体的关联性: elasticsearch提供的i ...
- [Blue Prism] Data item 的使用
1.用于存储各种数据类型的变量,支持的数据类型如下: Binary - 用于存储二进制 blob,例如文本文件. Date - 用于存储日期. 此数据类型与 DateTime 类似,只是 Date ...