一、引言
有个接收订单mq进行数据实时分析汇总的服务出现了积压,很明显是处理速度跟不上订单下单速度,要排查的重点就是影响节点处理速度的因素,下面分析一下博主的排查过程。
二、排查
1、qps
首先看了一下节点的qps,订单的qps一直高,并没有太大的区别。
2、mysql
到阿里云看了一下数据库的情况,没有慢sql,不会影响处理速度。
3、jvm
jvm如果经常发生full gc,就会stop the world影响节点处理情况,但是看看监控没什么问题。
4、节点
把节点监控时间拉长,发现了问题。
节点正常消费mq在34ms左右
凌晨处理速度慢到500~600ms
一段时间之后平均处理速度在200~300ms左右 ,但是也远远超出正常处理速度
集群增加两个节点之后,其他三个节点毫无压力,172.17.74.80的处理速度仍然在200~300ms左右
节点重启之后,处理速度恢复正常。
三、分析
只有这个节点处理速度变慢是很奇怪的事情,凌晨出现指明了方向,要看看有什么不同发生在凌晨,最后问到了dba那边,redis在那个时间点升级过,之后节点处理速度就慢如老牛。
服务处理订单mq时使用了redis分布式锁,说明升级引起了这个节点连接redis耗时。但是升级为什么会引起客户端连接耗时?为什么只有其中一个节点连接耗时?,网上没有找到相关的资料,而且这种情况没法复现,也就没法做各种测试进行确定。
四、总结
如果有redis或者mysql、mongo之类升级过后,节点平时正常功能产生了问题,可以将节点重启看是否能解决。
排查问题的过程其实是推测加上试错的过程,只要不影响业务就可以尝试去操作。