记一次接口超时

近期,收到线上告警,某个接口在中午12点时,突然超时了。

Skywalking/ Arthas 查看接口的耗时

Skywalking/ Arthas 都可以查看接口内各个方法的耗时。
一般情况下,查看到耗时的方法,

  • 看下sql 语句,查看执行计划EXPLAIN ,有没有加索引,有没有慢sql。
  • 看下查询的代码,有没有加缓存。加缓存可以提高查询速度。
  • 看下代码里有没有在循环里面调用数据库/缓存,如果有可以改成批量处理、异步处理。
  • 再看下代码里有没有发送短信,发送邮件等耗时操作,能否改用异步处理。

如果没有 Skywalking/Arthas ,也可以通过 StopWatch 进行分析。
详情见: https://blog.csdn.net/sinat_32502451/article/details/133026521

结果,这一次查看了这个接口的耗时代码,发现逻辑简单,只有一个 sql 语句,而且已经加索引了, EXPLAIN 后发现sql语句并没有慢 sql。
那说明超时,有可能并不是这个接口本身的问题。

查看 QPS

打开阿里云,通过阿里云的 WAF 功能,查看 QPS。 接口超时的时间段,QPS 是不是比平常高。

查看 Request rate (请求速率)

打开 grafana, 查看 Request rate,发现在这个接口超时的时间段,系统另一个接口的 Request rate 非常高,占用了大量的数据库连接池,导致了这个接口超时。

posted on 2024-07-07 00:14  乐之者v  阅读(3)  评论(0编辑  收藏  举报

导航