"); //-->
现场如下图所示:

开始排查网络问题
在监控里面发现网络一直很稳定。而且如果是网络出现问题,同一网段的应用应该也都会报错才对。事实上只有对应的应用和中间件报错。
排查日志
发现一旦有 中间件的register err 必定会出现中间件调用后端数据库的sql read timeout的报错。但这两个报错完全不是在一个线程里面的,一个是处理前端的Reactor线程,一个是处理后端SQL的Worker线程,如下图所示:

这两个线程是互相独立的,代码中并没有发现任何机制能让这两个线程互相影响。
进一步进行排查
和之前的慢SQL一样,都是调用第二个数据库超时,而DBA那边却说SQL执行没有任何异常,

感觉明显SQL执行有问题,只不过DBA是采样而且将采样耗时平均的,偶尔的几笔耗时并不会在整体SQL的耗时里面有所体现。

日志分析
从日志入手, REACTOR线程和Worker线程同时报错,但两者并无特殊的关联,说明可能是同一个原因引起的两种不同现象。在线上报错日志里面进行细细搜索,发现在大量的
NIOReactor-1-RW register err java.nio.channels.CloasedChannelException
日志中会掺杂着这个报错:
NIOReactor-1-RW Socket Read timed out
at XXXXXX . doCommit
at XXXXXX Socket read timedout
发现了端倪,Reactor作为一个IO线程,我们的中间件在处理commit/rollback这样的操作时候还是在Reactor线程进行的。很明显Reactor线程卡主是由于commit慢了

由于app1的commit特别慢而卡住了reactor1线程,从而落在reactor1线程上的握手操作都会超时!如下图所示:

为什么commit会变慢?
commit变慢所关联的DB正好也是出现慢SQL的那个DB。发现其中和存储相关的HBA卡有报错!如下图所示:

报错时间都是一致的!
推荐阅读:
明辰智航云安网络与虚拟化性能管理系统(www.mingczh.com)
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
输入电压E1为正时的对数变换功能电路(对数放大器4127)
Virtex-7 485T DSP处理能力
技术人员如何转型成功
超级单片机工具集
热烈庆祝论坛升级成功!!!
对标英特尔AMD!英伟达将于今年Q4推出旗下首款AI PC芯片
贸泽开售适用于新一代汽车和工业应用的Molex MX150穿缸密封连接器
【科技和移动性亮点】Aeva发布高分辨率4D激光雷达传感器,推动自动驾驶发展
荷兰扩大半导体出口管制范围 商务部回应:坚决反对
输入电流I1为负时的对数变换功能电路(对数放大器4127)
基于MPLS的透明局域网服务
斯坦福大学找到新方法 Google速度再提高5倍
中国企业优化云原生投资的三大策略
USB硬件检测软件
Wolfspeed得州厂关闭并挂牌出售
输出电压调节
【科技和移动性亮点】德州仪器发布全新汽车芯片
曝台积电拒绝代工三星Exynos处理器:理由是怕泄密
苹果公司CEO乔布斯在斯坦福大学的演讲中文字幕
usb协议(中文版)
USB调试助手V1.2
Virtex-7 485T I/O处理能力
I1为负、I2为正时的对数变换功能电路(对数放大器4127)
I1和I2为负时的对数变换功能电路(对数放大器4127)
一位加拿大中国IT人的心灵独白
I1和I2为正时的对数变换功能电路(对数放大器4127)
Arm计划涨价300%:考虑提供完整芯片设计
机构:预计到2026年医疗行业对生成式人工智能的投资将增加两倍
Windows下通过计算机并口读写24系列I2C存储器的小软件
集成了数字电源管理功能的模拟 DC/DC 控制器