作者 | 不才陈某  责编 | 张文

头图 | CSDN 下载自视觉中国

来源 | 码猿技术专栏(ID:oneswholife)

前言

众所周知 Redis 是单线程,有着极快的响应速度,但是有一天 Redis 突然变"慢"了,运维甚至开发都慌了,开始一系列的骚操作了,但是一点效果都没有,why?

遇到问题不要慌。首先需要确定的是:Redis真的变慢了吗?

今天陈某就来介绍下以什么标准为基线判断Redis变慢了?

Redis真的变慢了?

我们知道一个应用程序在服务器上运行,它的运行快慢和硬件乃至底层操作系统都有巨大的关系,因此 Redis 响应慢了就真的是 Redis 的锅?

如何判断 Redis 是不是真的变慢了?一个最直接方法:查看Redis响应延迟

大部分情况下 Redis 的延迟很低,但是在某些时刻延迟突然很高,当你发现Redis 命令的执行时间突然增长到几秒,基本就可以认定 Redis 变慢了。

但是不同的软硬件环境下,延迟时间的标准却是大相径庭,比如在服务器 A 上延迟为 1s 时基本就能判定 Redis 变慢了,在较好配置的服务器 B 上甚至延迟10ms 就可以判定 Redis 变慢了。

显然上述的标准很难判断,此时只能通过 Redis 基线性能来判断。

基线性能:系统在低压力、无干扰下的基本性能,这个性能只由当前的软件配置决定。

那么如何确定这个基线性能呢?很多人疑惑了?

从 2.8.7 版本开始,redis-cli 命令提供了–intrinsic-latency 选项,可以用来监测和统计测试期间内的最大延迟,这个延迟可以作为 Redis 的基线性能。其中,测试时长可以用–intrinsic-latency 选项的参数来指定(一般情况下 120s足够监测到最大延迟了)。

本机测试(未通过客户端)的监测命令如下:

redis-cli --intrinsic-latency 120
Max latency so far: 1 microseconds.Max latency so far: 9 microseconds.Max latency so far: 11 microseconds.Max latency so far: 29 microseconds.Max latency so far: 34 microseconds.Max latency so far: 36 microseconds.Max latency so far: 42 microseconds.Max latency so far: 44 microseconds.Max latency so far: 62 microseconds.Max latency so far: 599 microseconds.Max latency so far: 613 microseconds.Max latency so far: 8158 microseconds.Max latency so far: 13426 microseconds.Max latency so far: 16073 microseconds.Max latency so far: 19587 microseconds.Max latency so far: 22988 microseconds.
1982697419 total runs (avg latency: 0.0605 microseconds / 605.24 nanoseconds per run).Worst run took 379819x longer than the average latency.

发现最大的延迟 22988 微秒,因此这里的基线性能为 22988 微秒。

基线性能只和操作系统、硬件配置相关,因此这里可以结合基线性能判断 Redis是否真的变慢了?

一般运行时延迟达到基线性能的 2 倍以上则可判定 Redis 变慢了。

注意:基线性能非常重要,尤其对于虚拟化的环境(虚拟机、容器),他们的基线性能相对很高,因此结合基线性能判断是必要的。

切记:一定要在本机上运行测试命令,如果通过客户端则需要考虑网络性能的影响。

现在有很多网络性能的测量工具,比如 iperf,如果发现网络阻塞了,此时就需要联络公司的网络工程师了。

总结

本文介绍了如何判断 Redis 变慢的标准,即是基线性能。只有结合基线性能和运行延迟相对比,大概超过 2 倍以上则可判断 Redis 真的变慢了。

更多精彩推荐
  ☞索要 2.3 亿元赎金!富士康遭遇黑客攻击☞与 Brian Kernighan 一起回忆 Unix 的诞生!☞挑战 Linux 之父认为的“不可能”:向 M1 Mac 移植 Linux☞TIOBE 12 月编程语言:Python 有望第四次成为年度语言!☞升级版APDrawing,人脸照秒变线条肖像画,细节呈现惊人☞中科大“九章”历史性突破,但实现真正的量子霸权还有多远?
点分享点点赞点在看

Redis 突然变 慢 了,是运维还是开发的错?相关推荐

  1. 遇到跑批时快时慢、或一直变慢,作为运维DBA或开发的你,如何下手?

    作者:黄远邦(笔名小y),长期活跃于国内多家银行总行生产数据中心,擅长解决Oracle方面各类疑难问题.在北京中亦安图科技股份有限公司任数据库团队技术总监. 如果您的日终跑批/清算/报表等程序时快时慢 ...

  2. linux运维/自动化开发__目录

    服务器软件安装 nginx apache php mysql oracle tomcat memcached mongodb sqlserver 常用pc端工具安装使用 Xshell         ...

  3. 东师理想运维工具开发路线图(第一阶段)

    东师理想运维工具开发路线图(第一阶段) 全面建设三个目标:自动化打包.自动化运维.自动化测试(由易到难) 1.TEACH.EDUOFFICE.备课助手.理想课堂 四个产品的内部IP+外部IP服务器端打 ...

  4. 1+X 云计算运维与开发(中级)案例实战——使用 Mycat 构建读写分离的数据库集群

    1+X 云计算运维与开发(中级)案例实战--使用 Mycat 服务构建读写分离的数据库集群 前言 思路 实操 1.修改主机名,修改主机映射,配置yum源 2.给mycat机安装java服务,给db1和 ...

  5. 1+X云计算平台运维与开发认证(中级)样卷A-实操过程

    相关内容: 1+X云计算平台运维与开发认证(中级)样卷A-过程与答案 1+X云计算平台运维与开发认证(中级)样卷B-过程与答案 1+X云计算平台运维与开发认证(中级)样卷C-过程与答案 1+X云计算平 ...

  6. 1+X云计算平台运维与开发认证(中级)样卷E-过程与答案

    相关内容: 1+X云计算平台运维与开发认证(中级)样卷A-过程与答案 1+X云计算平台运维与开发认证(中级)样卷B-过程与答案 1+X云计算平台运维与开发认证(中级)样卷C-过程与答案 1+X云计算平 ...

  7. 1+X云计算平台运维与开发认证(中级)样卷D-过程与答案

    相关内容: 1+X云计算平台运维与开发认证(中级)样卷A-过程与答案 1+X云计算平台运维与开发认证(中级)样卷B-过程与答案 1+X云计算平台运维与开发认证(中级)样卷C-过程与答案 1+X云计算平 ...

  8. 1+X云计算平台运维与开发认证(中级)样卷C-实操过程

    相关内容: 1+X云计算平台运维与开发认证(中级)样卷A-过程与答案 1+X云计算平台运维与开发认证(中级)样卷B-过程与答案 1+X云计算平台运维与开发认证(中级)样卷C-过程与答案 1+X云计算平 ...

  9. 1+X云计算平台运维与开发认证(中级)样卷B-实操过程

    相关内容: 1+X云计算平台运维与开发认证(中级)样卷A-过程与答案 1+X云计算平台运维与开发认证(中级)样卷B-过程与答案 1+X云计算平台运维与开发认证(中级)样卷C-过程与答案 1+X云计算平 ...

最新文章

  1. 你真的理解JS的继承了吗?
  2. python try expect 多个except3.7_python try小例子
  3. 《程序设计技术》课程辅助学习资料
  4. 将linux系统分区变成逻辑卷,linux运维基础知识-系统分区及LVM逻辑卷的创建
  5. Spark DataFrames DataSet
  6. Qt之打印pdf文档
  7. python问卷调查数据分析_如何用excel统计调查问卷
  8. SQL语句基础-多表连接查询
  9. ubuntu中文智能拼音输入法配置
  10. 杭州生活小指南-公园卡-寺庙年卡
  11. C++汉字转拼音( 转)
  12. 【PHP】PHP与Web界面交互
  13. Demo:校验_SAP刘梦_新浪博客
  14. AndroidStudio下使用cmake开发ndk
  15. easyUI——访问权限
  16. c# 超时时间已到.在操作完成之前超时时间已过或服务器未响应,c#执行插入sql 时,报错:异常信息:超时时间已到。在操作完成之前超时时间已过或服务器未响应...
  17. Speedoffice——YEAR(NOW())函数公式如何使用
  18. vue项目使用腾讯地图获取定位
  19. 一个不错的iteye_BLOG(短裤党)
  20. 被动收入:回归原始且安全的两种赚取方法

热门文章

  1. 【分享】林清玄:有品质的生活,从来都不是钱决定的
  2. 当程序员,你应该懂的法则
  3. J2EE的13种核心技术简介
  4. 可恶的Java数组下标越界检查
  5. 程序员工资为什么普遍很高,原来是因为这个...
  6. java中的POJO、PO、VO分别是什么?
  7. root用户Linux 环境变量的配置解决(-bash: jps: command not found)有关问题
  8. [BZOJ2502]清理雪道
  9. Banner中利用Jquery隐藏显示下方DIV块
  10. 聚合数据接口,提供开放API