如何使用 Ai 发现和诊断由于数据库调用产生的性能问题

引言

我们在不少项目中都会和客户的开发者或架构师一起尝试使用 OneAPM 一起分析和优化 Java 应用程序的性能问题,发现大部分的性能问题,往往并不是因为在某一个具体方法上缓慢的一两毫秒,更多的是因为糟糕的架构设计,不合适的框架配置,错误的数据库访问模式,乱打日志以及内存过度消耗导致的 GC 异常、主机容器资源瓶颈。下面我将重点介绍如何使用 Ai 发现和诊断由于主机容器产生的性能问题。

一.常见的资源问题大概有以下几种可能:

  • 主机资源瓶颈:

    • 主机的cpu使用率、内存、磁盘、网络、文件打开数、tcp连接数中的某一个或多个指标存在瓶颈,从而导致用户访问请求时间慢
  • 容器资源瓶颈:

    • 容器的cpu使用率、内存、磁盘、网络中的某一个或多个指标存在瓶颈,从而导致用户访问请求时间慢

我遇到过的用户案例分析:

1、 问题类型:主机资源瓶颈

  • 问题发现:

    • 在拓扑图中发现节点颜色为红色或黄色,点击查看主机的资源占比较高 Sjcode21
  • 问题调查和分析:在主机详情页中,我们看到在web事务响应时间调用图中的某些点的响应时间较大,鼠标悬停时同步看到cpu使用率较高,那么有可能是系统资源产生了瓶颈从而导致用户请求的响应时间变慢。 Sjcode22

  • 针对这个问题可能给出的建议: 当因为服务器资源出现瓶颈时,应及时排除服务器原因

2、问题类型:容器资源瓶颈

  • 问题发现:在拓扑图中发现节点颜色为红色或黄色,点击查看容器的资源占比较高

  • 问题调查与分析: 在容器详情页,我们看到web事务响应时间调用图中的某些点的响应时间较大,鼠标悬停时可以看到该点容器的cpu使用率也非常高,有可能是容器资源到达瓶颈从而导致用户请求访问时间慢。 Sjcode23

  • 针对这个问题可能给出的建议: 用户可以进行该容器和其所在主机资源的排查,从而进行应用资源的重分配。