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 ...
随机推荐
- webSocket 与HTTP
WebSocket 协议在2008年诞生,2011年成为国际标准.现在所有浏览器都已经支持了.WebSocket 的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真 ...
- 你真的会用react hooks?看看eslint警告吧!(如何发请求、提升代码性能等问题)
前言 看过几个react hooks 的项目,控制台上几百条警告,大多是语法不规范,react hooks 使用有风险,也有项目直接没开eslint.当然,这些项目肯定跑起来了,因为react自身或者 ...
- uniapp以及微信小程序中scroll-view隐藏滚动条 自定义滚动条
隐藏滚动条 1.全局隐藏滚动条,在app.vue中 ::-webkit-scrollbar{ display: none; } 2.局部隐藏藏滚动条 样式没有使用scoped属性时, 否则无效. .u ...
- Java基础周测题,输入一个整数,输出所有能整除该整数的结果:
需求说明: 输入一个整数,输出所有能整除该整数的结果: 实现代码: package demo; import java.util.Scanner; public class test1 { publi ...
- 『无为则无心』Python函数 — 34、lambda表达式
目录 1.lambda的应用场景 2.lambda语法 3.快速入门 4.示例:计算a + b 5.lambda的参数形式 6.lambda的应用 lambda表达式的主要作用就是化简代码. 匿名函数 ...
- linux 之 DolphinScheduler 安装步骤
下载安装包 直接进官网下载 https://dolphinscheduler.apache.org/zh-cn/download/download.html 参考官方文档 https://dolphi ...
- Oracle 五种约束的创建和移除:
1.主键约束: 创建表的时候就添加: create table table_name (categoryId varchar2(10), categoryName varchar2(30), prim ...
- vue 使用mock来模拟数据
首先,需要安装mock npm install mockjs --save-dev 在main.js中引入mock mock文件写法如下: const Mock = require('mockjs') ...
- 记一次ARM服务器(鲲鹏920)的PXE批量装机遇到的坑
由于近期项目需要,在对一批华为鲲鹏920的ARM服务器(型号为天宫TG225 B1)进行批量装机的过程中,遇到了各种各样千奇百怪的bug(换个高情商的说法就是遇到了各种各样和x86服务器不一样的地方) ...
- 默认安装的phpMyAdmin会存在哪些安全隐患
利用: 1. 利用慢查询日志写入webshell 2. phpMyAdmin的setup目录暴露一些隐私信息 3. 通过phpMyAdmin修改php的ini配置 ...