阿里云Redis百万千万读写慢排查实战
背景
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的性能可能原因如下:
网络带宽和延迟通常是最大短板;在小对象存取时候,内存速度和带宽看上去不是很重要,但是对大对象(>10 KB), 它就变得重要起来
CPU 是另外一个重要的影响因素,由于是单线程模型,不需要多核,但需要单核能力强的,如使用Intel CPU,而不用AMD CPU
排查与实践
先查看redis带宽,我们是买的阿里云的,寻求运维同学查看一下阿里云控制台,发现生产是80MB/s,测试时20MB/s,看了配置也没有限制,那肯定不是带宽的问题
测试生产延迟,到生产pod里使用ping阿里云VIP地址,发现是192网段这个应该是内网,为了验证没有幺蛾子本地ping一下192地址发现ping不通,确定是走的内网,那就不应该既然走了内网且应用是部署在K8S也是在同一个地区的,不存在网络问题的,但是继续往下看发现ping的延迟是1ms,对于同区网络下应该不会这么高的,为了验证继续看看测试环境是否一样这样。
测试测试环境延迟,其他都跟生产一样,测试ping的是172网段是内网,但是发现延迟确是0.1ms相差了10-20倍,估计问题就是在这里了;估摸着折算到实际写入数据到redis估算应该是不会有这么大,应该会5倍左右提升
问题找到后,赶紧再次联系运维,怀疑是阿里云redis服务相关问题,向阿里云发起工单;给予解释是:阿里云上应用的K8S集群与RDS如果是同可用区则是小于1ms延迟,跨可用区则是小于3ms延迟;最终让运维检查发现生产K8S集群是在可用区I,生产RDS购买在了可用区H;又检查了测试环境K8S集群是在H区,测试RDS购买在了可用区H;所以结论是符合阿里云说的延迟的
生产实例,Ping信息:
测试实例,Ping信息:
阿里云工单聊天记录:
解决方案
迁移RDS可用区(推荐,我们是选这个方案,在阿里云上迁移一下就行; )
K8S集群新构建与RDS一样的H区,应用发到新K8S集群
我们后台页面
优化前spring batch表执行情况
优化后spring batch表执行情况
阿里云Redis百万千万读写慢排查实战相关推荐
- 阿里云Redis读写分离典型场景:如何轻松搭建电商秒杀系统
秒杀活动是绝大部分电商选择的低价促销,推广品牌的方式.不仅可以给平台带来用户量,还可以提高平台知名度.一个好的秒杀系统,可以提高平台系统的稳定性和公平性,获得更好的用户体验,提升平台的口碑,从而提升秒 ...
- 阿里云Redis混合存储典型场景:如何轻松搭建视频直播间系统
摘要: 本文主要介绍视频直播间系统,以及如何使用阿里云Redis混合存储实例方便快捷的构建大数据量,低延迟的视频直播间服务. 背景 视频直播间作为直播系统对外的表现形式,在整个系统中处于核心地位.通常 ...
- 阿里云Redis开发遇到的问题总结
一.常见的客户端程序 关于Redis支持的客户端列表,请参见Redis Clients. Jedis客户端 TairJedis客户端(Redis企业版专用) PhpRedis客户端 redis-py客 ...
- 阿里云Redis数据过期和淘汰策略解答
背景 阿里云Redis作为一个高性能的内存NoSQL数据库,其容量受到最大内存限制的限制. 用户在使用阿里云Redis时,除了对性能,稳定性有很高的要求外,对内存占用也比较敏感.在使用过程中,有些用户 ...
- 跬步千里 —— 阿里云Redis bitfield命令加速记
link:https://developer.aliyun.com/article/757841 在一次阿里云客户问题解决中,通过给Redis添加bitfield_ro命令,解决了Redis官方bit ...
- 阿里云Redis账号
阿里云Redis的账号系统允许用户对同一个实例创建多个账号,并赋予不同账号相同或者不同的权限.这给用户带来更灵活的实例管理,不同的模块可以使用不同的账号,最大限度的避免误操作. 目前只有4.0主从规格 ...
- 王义成:阿里云Redis服务助力游戏行业发展
2018数据库直播大讲堂峰会Redis专场,来自阿里云高级产品专家王义成带来Redis助力游戏行业的相关演讲.主要从传统数据库的压力开始谈起,着重介绍了阿里云Redis产品架构以及不同的版本,接着对R ...
- 深度解析双十一背后的阿里云 Redis 服务
在一片欢呼之中,2018年的双十一完美收官,各项数据不出意外的刷出了新的记录,亮眼的数据背后是阿里过硬的技术支撑.其中阿里云Redis不仅保障了阿里集团内部业务双十一的流量洪峰平稳度过,也让使用阿里云 ...
- 阿里云 Redis 报出You can't read against a non-read redis.解决方案
中午收到报警,所有请求阿里云redis的服务都报出了异常,立即上线排查查看log,发现log中有如下错误提示: [2019-04-29 11:47:35,339] [ERROR] [XNIO-2 ta ...
最新文章
- 一种事件相机描述子——DART
- 电脑wifi不见了_大家好,我是来给你家 WiFi 提速的
- win7安装python2.7_python学习(3)-win7安装python2.7
- Linux系统下安装卸载jdk
- Facebook 开源增强版 LASER,可使用90多种语言
- Android webview mqtt,APICloud
- 由ViewStateException: The client disconnected想到的
- 这台计算机似乎没有安装操作系统_【每日一练】计算机一级考试(一)
- Dell笔记本耳机孔插进入没有反应问题
- 仿京东商城主页(静态代码)
- 单模光纤VS多模光纤
- LWR--local weighted regression
- 威联通 php配置,威联通(qnap) NAS docker 安装 IYUU 步骤
- 蓝桥杯刷题以及算法解析的网址
- 该怎么回答面试官问“你有什么优缺点?”
- Mount is denied because the NTFS volume is already exclusively opened. The volume may be already mou
- 八皇后问题及其解决方案
- 耀炎食品-1.index
- 关于ASP 文件类的使用
- 基于JavaWeb+MySQL的快递驿站系统
热门文章
- 模仿王者的炫酷前端页面
- 计算机毕业设计JAVA前后端分离在线作业系统mybatis+源码+调试部署+系统+数据库+lw
- python如何简便使用cumsum函数完成绘制累计概率分布图(CDF)
- 神经网络分为哪三种模型,神经网络主要包括哪些
- 【Android】用Cubism 2制作自己的Live2D——android sdk样本的下载与Android studio编译!...
- 当贝投影F3和爱普生TW5700 有什么区别哪个好
- 好文:如何成为一个独立思考之人?
- 盏茶python(四) 控制流
- nova 创建虚拟机流程
- html中图标方框,css – 为什么我的图标显示为空白方块?