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. wordpress中遇到的问题

    在博客园申请了账号,也已经开始写了两篇内容,但还是想要有属于自己的小站.于是将域名续费了几年,又在我之前买的vps上搭建了一个wordpress博客站点,这样以后我就可以同时发布到两个地方. 根据教程 ...

  2. MySQL高级查询与编程笔记 • 【第2章 数据定义和操作】

    全部章节   >>>> 本章目录 2.1 数据定义语言和数据操作语言 2.1.1 设计"优乐网"数据库 2.1.2 数据定义语言 2.1.3 数据操作语言 ...

  3. Java高级程序设计作业目录(作业笔记)

    持续更新中............. Java高级程序设计笔记 • [目录] 我的大学笔记>>> 第1章 IO流>>> 1.1.3 编写Java程序,在电脑硬盘里, ...

  4. 分布式抽奖秒杀系统,DDD架构设计和实现分享

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.用大项目,贯穿知识体系 写CRUD.堆API.改屎山⛰,熬多少个996也只是成为重复的螺丝 ...

  5. 造轮子-strace(二)实现

    这一篇文章会介绍strace如何工作,再稍微深入介绍一下什么是system call.再介绍一下ptrace.wait(strace依赖的system call).最后再一起来造个轮子,动手用代码实现 ...

  6. Linux-saltstack-1 saltstack的安装与基本配置

    @ 目录 一.环境介绍 二.安装saltstack 1.配置安装yum源 2.安装salt-master 3.安装slat-minion 三.配置salt-master 1.指定master的地址 2 ...

  7. Sentry 企业级数据安全解决方案 - Relay 项目配置

    内容整理自官方文档 系列 Sentry 企业级数据安全解决方案 - Relay 入门 Sentry 企业级数据安全解决方案 - Relay 运行模式 Sentry 企业级数据安全解决方案 - Rela ...

  8. python + pymysql连接数据库报“(2003, "Can't connect to MySQL server on 'XXX数据库地址' (timed out)")”

    python + pymysql连接数据库报"(2003, "Can't connect to MySQL server on 'XXX数据库地址' (timed out)&quo ...

  9. hive 之 将excel数据导入hive中 : excel 转 txt

    一.需求: 1.客户每月上传固定格式的excel文件到指定目录.每月上传的文件名只有结尾月份不同,如: 10月文件名:  zhongdiangedan202010.xlsx  , 11月文件名: zh ...

  10. ':app@debug/compileClasspath': Could not find any version that matches com.android.support:appcompat-v7:30.+.

    ERROR: Unable to resolve dependency for ':app@debug/compileClasspath': Could not find any version th ...