redisson 大量ping操作,导致 tps过高
大家好,我是烤鸭:
这个问题有点奇怪,新服务上线,redis tps居高不下,还都是ping命令。
环境:
服务 : 280台,redis集群:12主24从
问题
由于服务刚上线,还没有访问,发现ping命令的qps 7K,就很纳闷。运维帮忙看了下,确认这些命令的发起ip是业务服务。
问题排查
项目中用到了 lettuce和redisson,在测试环境测试,尝试把redisson去掉后,没有大量ping了。
加上之后,又有了,频率大概是 每分钟 26次。
看下源码
跟了源码发现是 PingConnectionHandler.sendPing 发起的ping操作。
如果触发了 channelActive 就会定时执行ping,检测channel 是否还保持连接。
protected void sendPing(final ChannelHandlerContext ctx) {final RedisConnection connection = RedisConnection.getFrom(ctx.channel());final RFuture<String> future = connection.async(StringCodec.INSTANCE, RedisCommands.PING);config.getTimer().newTimeout(new TimerTask() {@Overridepublic void run(Timeout timeout) throws Exception {CommandData<?, ?> commandData = connection.getCurrentCommand();if ((commandData == null || !commandData.isBlockingCommand()) && (future.cancel(false) || !future.isSuccess())) {ctx.channel().close();log.debug("channel: {} closed due to PING response timeout set in {} ms", ctx.channel(), config.getPingConnectionInterval());} else {sendPing(ctx);}}// 决定ping的频率,为0表示不再ping了,默认是0}, config.getPingConnectionInterval(), TimeUnit.MILLISECONDS);
}
大部分人都不会有这个问题,因为 redisson默认的 pingConnectionInterval 就是0…
主要是写公共组件那哥们把这个值默认写成了60s…
结论
这个值改了之后就没有这个问题了。不过ping tps: 7k 确实有点诡异。
这个7k 只是部分client发起的,再平均到redis 实例,每个实例150 tps,也还可以接受吧。
最终发现是发现不同的grafana统计数据有差异,估计150 tps差不多。
redisson 大量ping操作,导致 tps过高相关推荐
- linux mysql cpu 高,Linux系统中关于Mysql数据库导致CPU很高的问题解决
Linux系统中关于Mysql数据库导致CPU很高的问题解决 发布时间:2007-11-19 00:01:12来源:红联作者:spworks 服务器环境 Liunx AS4 + PHP5 + Mysq ...
- oralce load的时候使用触发器会导致load慢吗_一次FGC导致CPU飙高的排查过程
今天测试团队反馈说,服务A的响应很慢,我在想,测试环境也会慢?于是我自己用postman请求了一下接口,真的很慢,竟然要2s左右,正常就50ms左右的. 于是去测试服务器看了一下,发现服务器负载很高, ...
- windows进程管理器_系统变慢?WMI进程导致的CPU高占用解决
我们有时会遇到系统变慢的情况,查看资源任务管理窗口发现是WMI导致的CPU高占用所致.那么,WMI究竟为何物,能否解除由它导致的CPU高占用,如何解除? 1. 查明WMI的来龙去脉 WMI是Windo ...
- 一次FGC导致CPU飙高的排查过程
今天测试团队反馈说,服务A的响应很慢,我在想,测试环境也会慢?于是我自己用postman请求了一下接口,真的很慢,竟然要2s左右,正常就50ms左右的. 于是去测试服务器看了一下,发现服务器负载很高, ...
- 一次 jbd2进程导致磁盘 io 高的分析解决过程
故障现象 在3节点组成的大数据集群中,混部了 ES,kafka,zk,pg,mysql,spark,yarn,hdfs,以及业务的 etl 程序等组件.起初发现业务进程处理数据速度很慢,排查后发现数据 ...
- DllMain中不当操作导致死锁问题的分析——DllMain中要谨慎写代码(完结篇)
之前几篇文章主要介绍和分析了为什么会在DllMain做出一些不当操作导致死锁的原因.本文将总结以前文章的结论,并介绍些DllMain中还有哪些操作会导致死锁等问题.(转载请指明出于breaksoftw ...
- DllMain中不当操作导致死锁问题的分析--加载卸载DLL与DllMain死锁的关系
前几篇文章一直没有在源码级证明:DllMain在收到DLL_PROCESS_ATTACH和DLL_PROCESS_DETACH时会进入临界区.这个论证非常重要,因为它是使其他线程不能进入临界区从而导致 ...
- DllMain中不当操作导致死锁问题的分析--导致DllMain中死锁的关键隐藏因子2
本文介绍使用Windbg去验证<DllMain中不当操作导致死锁问题的分析--导致DllMain中死锁的关键隐藏因子>中的结论,调试对象是文中刚开始那个例子.(转载请指明出于breakso ...
- DllMain中不当操作导致死锁问题的分析--导致DllMain中死锁的关键隐藏因子
有了前面两节的基础,我们现在切入正题:研究下DllMain为什么会因为不当操作导致死锁的问题.首先我们看一段比较经典的"DllMain中死锁"代码.(转载请指明出于breaksof ...
最新文章
- 第 1 章 容器生态系统 - 003 - 容器生态系统 (续)
- 【免费软件测试视频-0016】——LR系列之---协议的选择
- python软件包自带的集成开发环境-实验一 熟悉Python的集成开发环境
- 图纸管理软件_图纸文件管理操作繁琐?巧用“权限”,管理更高效
- java class类型参数_使用Class对象实例化Java类型参数/ generic
- 学习使用的编程及调试技巧
- 【ES6】什么是Promise?解析Promise的基本用法
- 机器学习中的数学(七)--凸优化的基础知识
- HLS playlist典型示例
- springAOP 之 前置输出
- matlab如何看线性趋势线,“excle直线拟合“excel 趋势线 是怎么计算出来的
- 苹果6怎样分屏_皮皮喵最新版下载安卓版更新 0.2.6
- 凸优化非系统学习之笔记5:内点法
- 微信公众号python开发_基于Python的微信公众平台二次开发(Python常用框架、订阅号开发、公众号开发)...
- python-转义字符及其使用
- android 录屏工具,ShareREC for Android全系统手机录屏软件原理解析
- ChatGPT45个插件列表
- hadoop 不能加载native-hadoop library问题
- Open3D Voxelization 体素化
- 【AP】On the Bayesian interpretation of Black-Litterman(2)
热门文章
- react学习(15)---antdesign form两种验证
- [html] html标签的属性值是否可以省略引号?为什么?
- [vue] 说说你对proxy的理解
- [js] 请写一个性能最好的深度克隆对象的方法
- 前端学习(2583):生态圈练习解答下
- 前端学习(2161):vuecli项目得目录结构解析
- 前端学习(1655):前端系列实战课程之浏览器类型监测
- 71 include动作
- MySQL之——The slave I/O thread stops because master and slave have equal...
- Github项目|几行代码即可实现人脸检测、目标检测的开源计算机视觉库