前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis性能分析思路

Redis性能分析思路

作者头像
飞天小子
发布2022-05-10 10:48:37
4450
发布2022-05-10 10:48:37
举报
文章被收录于专栏:公众号-测试驿栈

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-02-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 Redis®
腾讯云数据库 Redis®(TencentDB for Redis®)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档