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性能分析思路的更多相关文章

  1. 你知道CPU结构也会影响Redis性能吗?

    啦啦啦,我是卖身不卖艺的二哈,ε=(´ο`*)))唉错啦(我是开车的二哈),我又来了,铁子们一起开车呀! 今天来分析下CPU结构对Redis性能会有影响吗? 在进行Redis性能分析的时候,通常我们会 ...

  2. 关于redis性能问题分析和优化

    一.如何查看Redis性能 info命令输出的数据可以分为10个分类,分别是: server,clients,memory,persistence,stats,replication,cpu,comm ...

  3. redis性能优化、内存分析及优化

    redis性能优化.内存分析及优化 1.优化网络延时 2.警惕执行时间长的操作 3.优化数据结构.使用正确的算法 4.考虑操作系统和硬件是否影响性能 5.考虑持久化带来的开销 5.1 RDB 全量持久 ...

  4. Linux性能分析:生产环境服务器变慢,诊断思路和性能评估

    Linux性能分析:生产环境服务器变慢,诊断思路和性能评估 一.整机:top 二.CPU:vmstat 所有CPU核信息 每个进程使用CPU的用量分解信息 三.内存:free 四.硬盘:df 五.磁盘 ...

  5. 【性能测试】常见的性能问题分析思路(二)案例&技巧

    上一篇介绍了性能问题分析的诊断的基本过程,还没看过的可以先看下[性能测试]常见的性能问题分析思路-道与术,精炼总结下来就是,当遇到性能问题的时候,首先分析现场,然后根据现象去查找对应的可能原因,在通过 ...

  6. redis常用性能分析命令

    一.连接 src/redis-cli -h 10.20.137.141 -p 6379 >auth 123456789 src/redis-cli -h 10.20.137.141 -p 637 ...

  7. Redis源代码分析(十三)--- redis-benchmark性能測试

    今天讲的这个是用来给redis数据库做性能測试的,说到性能測试,感觉这必定是高大上的操作了.redis性能測试.測的究竟是哪方面的性能,怎样測试,通过什么指标反映此次測试的性能好坏呢.以下我通过源代码 ...

  8. Redis 性能问题分析

    在一些网络服务的系统中,Redis 的性能,可能是比 MySQL 等硬盘数据库的性能更重要的课题.比如微博,把热点微博[1],最新的用户关系,都存储在 Redis 中,大量的查询击中 Redis,而不 ...

  9. enode框架step by step之框架要实现的目标的分析思路剖析1

    enode框架step by step之框架要实现的目标的分析思路剖析1 enode框架系列step by step文章系列索引: 分享一个基于DDD以及事件驱动架构(EDA)的应用开发框架enode ...

随机推荐

  1. a.equals(b) 判断对象相等

    一.值是null的情况: 1.a.equals(b), a 是null, 抛出NullPointException异常. 2.a.equals(b), a不是null, b是null,  返回fals ...

  2. 【Java例题】5.2 数组转换

    2. 有一个一维数组由键盘输入,据输入的m和n,将其转换为m*n的二维数组. package chapter5; import java.util.Scanner; public class demo ...

  3. [opencv]计算多边形逼近曲线的长度

    //利用曲线逼近,计算逼近曲线的长度 //首先创建一个逼近曲线 vector<Point2f> approx; approxPolyDP(contours[i], approx, 2, t ...

  4. HAproxy开启日志记录

    1.说明 HAproxy在默认情况不会记录日志, 不仅要在haproxy.conf中配置日志输出, 还需要修改系统日志的配置文件. 2.修改haproxy.conf 在haproxy.conf文件中增 ...

  5. C# .net 环境下使用rabbitmq消息队列

    消息队列的地位越来越重要,几乎是面试的必问问题了,不会使用几种消息队列都显得尴尬,正好本文使用C#来带你认识rabbitmq消息队列 首先,我们要安装rabbitmq,当然,如果有现成的,也可以使用, ...

  6. 抛弃go-micro,使用极简微服务框架Bull

    简介 Bull是一款基于GO语言的极简微服务框架. 使用GRPC作为RPC协议,使用ETCD作为注册中心. 框架目前已经实现了服务注册.服务发现(客户端轮训)功能. 整体架构 代码地址 https:/ ...

  7. 《MySQL5.7从入门到精通》(高清).PDF,免费无需任何解压密码

    链接:https://pan.baidu.com/s/1nnm5IbExaBhjL6-7qR1Oxw 提取码:vzpx

  8. java 字符串 大小写转换 、去掉首末端空格 、根据索引切割字符 、判断是否含有某连续字符串

    1. 字符串转大写: toUpperCase() 字符串转小写: toLowerCase() @Test public void tt(){ String d = "sdgGHJGjghGH ...

  9. 简单的树莓派4b装64位系统+docker和docker-compose

    起因是这样的,我系统崩了 事先准备 wifi或网线 树莓派和电源 内存卡和读卡器 首先是装系统 去https://downloads.raspberrypi.org/raspios_arm64/ima ...

  10. PowerPoint2010实现折线图动态展示

    原文链接:https://www.toutiao.com/i6797629648881582596/ 我们经常会制作折线图表来表达一个过程的趋势变化,而如果让折线图动起来,会更加的生动.接下来我们将一 ...