背景

20万数据 100M,单条平均大小100K写入redis花费6-8分钟,计算一下NetWork有多少,公式2:100 *1024 KB/360S=284KB/S,发现只有这么点,验证实际是否这样,通过Prometheus+Grafana监控导入dashboard插件 redis和redis time streaming

安装监控

本地安装prometheus+grafana

如果已经安装或者开发测试环境已安装请忽略这一步,下载docker,mac电脑可以使用brewinstall docker或者去官网

Install Docker Desktop on Mac

Docker加速镜像配置

配置文件:

加速镜像配置地址:~/.docker/daemon.json;内容如下:

{

"builder": {

"gc": {

"defaultKeepStorage":"20GB",

"enabled": true

}

},

"experimental": false,

"features": {

"buildkit": true

},

"registry-mirrors": [

"https://52msq4gm.mirror.aliyuncs.com"

]

}

启动prometheus

docker run -d--restart=always

-p 9090:9090 -v /XX/prometheus.yml:/etc/prometheus/prometheus.ymlprom/Prometheus

启动grafana

docker run -d \

-p3000:3000 \

--name=grafana \

-v/opt/grafana-storage:/var/lib/grafana \

grafana/Grafana

Docker 重新启动命令

docker restartgrafana

docker restartprometheus

进入grafana控制台配置Redis的DataSource;

安装 redis plugins

配置redis dataSource

下载grafana模版

进入grafana dashboard官网下载模版,Dashboards | Grafana Labs datasource选择redis,把这下个下载json

搜索redis dashboard

下载json文件

Grafana配置导入redis监控模版

配置好后进入redis dashboard

Redis

Redis stream

问题分析

grafana监控

根据grafana监控 NetWork指标曲线 200~300KB/s(假装上面截图是,当时测试没有截图,懒得在跑一遍)

计算300KB/s 100M数据需要多久,公式:100 * 1024 KB/300KB/60S=5.6分钟

计算写入6分钟写入100M数据是多少NetWork,公式2:100 * 1024 KB/360S=284KB/S

影响redis性能原由

综上所述,这个写入redis是非常慢的,有很大的问题;影响redis的性能可能原因如下:

  1. 网络带宽和延迟通常是最大短板;在小对象存取时候,内存速度和带宽看上去不是很重要,但是对大对象(>10 KB), 它就变得重要起来

  1. CPU 是另外一个重要的影响因素,由于是单线程模型,不需要多核,但需要单核能力强的,如使用Intel CPU,而不用AMD CPU

排查与实践

  1. 先查看redis带宽,我们是买的阿里云的,寻求运维同学查看一下阿里云控制台,发现生产是80MB/s,测试时20MB/s,看了配置也没有限制,那肯定不是带宽的问题

  1. 测试生产延迟,到生产pod里使用ping阿里云VIP地址,发现是192网段这个应该是内网,为了验证没有幺蛾子本地ping一下192地址发现ping不通,确定是走的内网,那就不应该既然走了内网且应用是部署在K8S也是在同一个地区的,不存在网络问题的,但是继续往下看发现ping的延迟是1ms,对于同区网络下应该不会这么高的,为了验证继续看看测试环境是否一样这样。

  1. 测试测试环境延迟,其他都跟生产一样,测试ping的是172网段是内网,但是发现延迟确是0.1ms相差了10-20倍,估计问题就是在这里了;估摸着折算到实际写入数据到redis估算应该是不会有这么大,应该会5倍左右提升

  1. 问题找到后,赶紧再次联系运维,怀疑是阿里云redis服务相关问题,向阿里云发起工单;给予解释是:阿里云上应用的K8S集群与RDS如果是同可用区则是小于1ms延迟,跨可用区则是小于3ms延迟;最终让运维检查发现生产K8S集群是在可用区I,生产RDS购买在了可用区H;又检查了测试环境K8S集群是在H区,测试RDS购买在了可用区H;所以结论是符合阿里云说的延迟的

生产实例,Ping信息:

测试实例,Ping信息:

阿里云工单聊天记录:

解决方案

  1. 迁移RDS可用区(推荐,我们是选这个方案,在阿里云上迁移一下就行; )

  1. K8S集群新构建与RDS一样的H区,应用发到新K8S集群

我们后台页面

优化前spring batch表执行情况

优化后spring batch表执行情况

阿里云Redis百万千万读写慢排查实战相关推荐

  1. 阿里云Redis读写分离典型场景:如何轻松搭建电商秒杀系统

    秒杀活动是绝大部分电商选择的低价促销,推广品牌的方式.不仅可以给平台带来用户量,还可以提高平台知名度.一个好的秒杀系统,可以提高平台系统的稳定性和公平性,获得更好的用户体验,提升平台的口碑,从而提升秒 ...

  2. 阿里云Redis混合存储典型场景:如何轻松搭建视频直播间系统

    摘要: 本文主要介绍视频直播间系统,以及如何使用阿里云Redis混合存储实例方便快捷的构建大数据量,低延迟的视频直播间服务. 背景 视频直播间作为直播系统对外的表现形式,在整个系统中处于核心地位.通常 ...

  3. 阿里云Redis开发遇到的问题总结

    一.常见的客户端程序 关于Redis支持的客户端列表,请参见Redis Clients. Jedis客户端 TairJedis客户端(Redis企业版专用) PhpRedis客户端 redis-py客 ...

  4. 阿里云Redis数据过期和淘汰策略解答

    背景 阿里云Redis作为一个高性能的内存NoSQL数据库,其容量受到最大内存限制的限制. 用户在使用阿里云Redis时,除了对性能,稳定性有很高的要求外,对内存占用也比较敏感.在使用过程中,有些用户 ...

  5. 跬步千里 —— 阿里云Redis bitfield命令加速记

    link:https://developer.aliyun.com/article/757841 在一次阿里云客户问题解决中,通过给Redis添加bitfield_ro命令,解决了Redis官方bit ...

  6. 阿里云Redis账号

    阿里云Redis的账号系统允许用户对同一个实例创建多个账号,并赋予不同账号相同或者不同的权限.这给用户带来更灵活的实例管理,不同的模块可以使用不同的账号,最大限度的避免误操作. 目前只有4.0主从规格 ...

  7. 王义成:阿里云Redis服务助力游戏行业发展

    2018数据库直播大讲堂峰会Redis专场,来自阿里云高级产品专家王义成带来Redis助力游戏行业的相关演讲.主要从传统数据库的压力开始谈起,着重介绍了阿里云Redis产品架构以及不同的版本,接着对R ...

  8. 深度解析双十一背后的阿里云 Redis 服务

    在一片欢呼之中,2018年的双十一完美收官,各项数据不出意外的刷出了新的记录,亮眼的数据背后是阿里过硬的技术支撑.其中阿里云Redis不仅保障了阿里集团内部业务双十一的流量洪峰平稳度过,也让使用阿里云 ...

  9. 阿里云 Redis 报出You can't read against a non-read redis.解决方案

    中午收到报警,所有请求阿里云redis的服务都报出了异常,立即上线排查查看log,发现log中有如下错误提示: [2019-04-29 11:47:35,339] [ERROR] [XNIO-2 ta ...

最新文章

  1. 一种事件相机描述子——DART
  2. 电脑wifi不见了_大家好,我是来给你家 WiFi 提速的
  3. win7安装python2.7_python学习(3)-win7安装python2.7
  4. Linux系统下安装卸载jdk
  5. Facebook 开源增强版 LASER,可使用90多种语言
  6. Android webview mqtt,APICloud
  7. 由ViewStateException: The client disconnected想到的
  8. 这台计算机似乎没有安装操作系统_【每日一练】计算机一级考试(一)
  9. Dell笔记本耳机孔插进入没有反应问题
  10. 仿京东商城主页(静态代码)
  11. 单模光纤VS多模光纤
  12. LWR--local weighted regression
  13. 威联通 php配置,威联通(qnap) NAS docker 安装 IYUU 步骤
  14. 蓝桥杯刷题以及算法解析的网址
  15. 该怎么回答面试官问“你有什么优缺点?”
  16. Mount is denied because the NTFS volume is already exclusively opened. The volume may be already mou
  17. 八皇后问题及其解决方案
  18. 耀炎食品-1.index
  19. 关于ASP 文件类的使用
  20. 基于JavaWeb+MySQL的快递驿站系统

热门文章

  1. 模仿王者的炫酷前端页面
  2. 计算机毕业设计JAVA前后端分离在线作业系统mybatis+源码+调试部署+系统+数据库+lw
  3. python如何简便使用cumsum函数完成绘制累计概率分布图(CDF)
  4. 神经网络分为哪三种模型,神经网络主要包括哪些
  5. 【Android】用Cubism 2制作自己的Live2D——android sdk样本的下载与Android studio编译!...
  6. 当贝投影F3和爱普生TW5700 有什么区别哪个好
  7. 好文:如何成为一个独立思考之人?
  8. 盏茶python(四) 控制流
  9. nova 创建虚拟机流程
  10. html中图标方框,css – 为什么我的图标显示为空白方块?