一次系统访问“慢”的排查过程

     项目背景:某电商平台系统演示,在上午访问各模块时,响应时间均正常。在下午十二点半左右,访问“采购计划”,“订单查询”时,出现响应时间超过十秒的现象。在一点半就要开始演示,所以进行紧急处理。
     涉及到的阿里产品:EDAS ,DRDS,RDS,MQ,DTS
    

----
排查思路:因为不确认是网络还是系统问题,所以进行双向排查。

       1. 排查内网以及外网访问延迟
       2. 登录edas平台根据服务监控查看系统调用链

网络验证

   1.  telnet 应用ip  端口      ##连通性没有问题
   2.  netstat -antulp | grep 端口   ##没有网络延迟现象

鹰眼调用链查看

一次系统访问“慢”的排查过程
观察发现应用耗时普遍偏高,点击查看调用链
一次系统访问“慢”的排查过程
选择其中一个TraceId进入查看详情
一次系统访问“慢”的排查过程
可以看到大量时间都耗在数据库查询上

查看相应数据库

直接查看DRDS下面挂载的RDS资源情况
发现其中一个RDS的CPU从中午十二点半开始逐渐升高达到98%
一次系统访问“慢”的排查过程
发生这种情况很奇怪,就拉上开发,咨询相应业务逻辑

发现A中心通过MQ调用B中心,而今天中午有大量数据落库,导致业务逻辑大并发处理数据,由此导致cpu升高,因为客户处理的这张表未进行分库分表,所以压力都集中在一个RDS上

解决

数据落库是通过DTS数据订阅实现的,所以暂停了数据订阅通道(数据订阅数据保存时间为24小时)
升级cpu过高的rds
系统访问正常,演示正常进行。
总结:梳理的时候觉得问题挺明显的,但是处理时,对业务逻辑不完全了解,根本无法定位到实际问题所在,还有数据库的前期分库分表设计真的太重要了。

上一篇:纳管集群接入日志服务


下一篇:在Istio上创建自定义的ingress-gateway