关于全新版本的代码级应用服务端性能监控平台( Application Insight 简称 Ai),在上一篇文章中,我们以Ai的产品架构为维度讲述了如何发现应用性能问题,这一篇,将详述如何排查这些问题。
0 1 问题的排查问题的排查可以分为两部分:
第一部分:具体tier排查,当你从应用拓扑图中发现有问题的tier时,通过通过弹框从节点、web事务入口、web事务、主机、容器五个维度了解概要,再通过概要进行下钻;
第二部分:综合排查,在web事务入口、web事务、调用链追踪、数据库列表、远程服务汇总了应用运行过程中所产生的数据,用户可直接进入某一模块,通过查看有问题的节点排查问题。
0 2 问题排查的步骤Step1:具体tier排查
点开tier弹框查看具体内容,节点弹框包括总览部分、节点、web事务入口、web事务、主机、容器。
在节点部分可以查看部署探针实例的 tier 的 apdex、响应时间等,如果出现 apdex<0.9,说明该节点异常,可以点击节点名称查看详情;
在web事务入口可以查看该tier相关的web事务入口,如果出现响应时间较长,可以点击web事务入口名称查看详情;
在web事务可以查看该节点相关的web事务名称,如果出现响应时间较长的事务,可以点击web事务名称查看详情;
在主机页面可以查看该tier部署的主机资源使用情况,如果出现cpu、内存、磁盘空间、磁盘io使用率较高(大于75%),可以点击主机名称查看详情;
在容器页面(当应用部署容器时)可以查看该tier部署的容器资源使用情况,如果出现cpu、内存、磁盘空间、磁盘io使用率较高(大于75%),可以点击主机名称查看详情;
通过弹框定位到web事务入口的响应时间较长时,点击web事务入口名称进入详情。详情包括两部分:
1. 总览,包括调用拓扑图,显示web事务入口的该节点调用了哪些 web 事务,对于响应时间长的web事务可以点击名称进入查看详情;
2. 调用链追踪,调用链追踪页面按时间倒序排列显示抓取到的调用链情况,对于颜色为红色的调用链表明为不健康,用户可点击查看详情。
web事务入口-调用链追踪
进入调用链追踪入口后,点击图形中的“可钻取”,进行更深一步的定位(即trace或snapshot)
web事务入口-调用链追踪-trace查看
Trace部分包括四个模块,概要、详情、参数、SQL。在概要部分包括曲线图和最慢组件两部分,用户通过曲线图可以直接看到耗时占比最多的方法(或外部服务或数据库调用);通过最慢组件部分,可以直观的看到耗时最长的慢方法(或外部服务或数据库调用)。比如在下图中我们可以看到/ rest 方法耗时特别长,执行时间花了10.07s。点击进入详情可以查看到是调用外部服务时耗时最长,即可对此外部服务的调用进行优化。
通过弹框定位到节点的 apdex 较低或响应时间较长时,点击节点名称查看节点详情。在 OneAPM 中,一个节点对应一个 tier。点击进入tier后,排查顺序如下:
查看总览部分的响应时间图,该图包括了该 tier 的整体响应时间、该tier每个组成部分的响应时间和调用次数,比如 webapp 服务由 jvm 、数据库、外部调用、应用内部调用组成,直接可以看到数据库的调用时间比较长,因此可能 mysql 数据库产生了问题。
用户可点击查看该时间点的 trace 列表
选择某条 trace 进入查看详情,我们可以直观的看到在 customer 表中进行了 select 操作耗时24.88s,用户点击“SQL”可以查看该 sql 语句是怎么写的,或者直接查看代码是否该语句写的有问题。
C 具体WEB事务排查通过弹框定位到响应时间较长的web事务,可以点击进入web事务查看详情。Web 事务包括三部分,总览、trace(或 snapshot )、性能剖析。
具体 Web 事务排查-总览页面
总览页面可以查看该 Web 事务执行组件的响应时间图、最慢组件总览。(注:组件一般为慢方法、慢外部调用、慢数据库调用)在响应时间图表中以该 Web 事务的组成方法为单位,绘制出每个方法的调用耗时图,用户可点击进行钻取查看所选时间内的 trace 列表,或者直接查看总览部分,快速定位是哪部分产生问题。最慢组件部分包括慢 sql、慢内部调用、慢远程调用等,对于慢 sql ,可以在数据库列表查看该 sql 数据的相关详情;对于慢远程调用,可以在远程服务列表查看该语句的调用详情。
具体 Web 事务排查- trace 页面
在 trace 页面选择某条 trace,点击进入详情,在总览页面-最慢组件看到某方法执行耗时长耗时长达75.06秒,点击“详情”查看代码级别的调用详情,可以在执行此方法时进入了循环,因此可能是此处代码有问题,需要进行代码排查及优化。
OneAPM 系统支持快照功能,过去两分钟内 Web 事务的响应时间超过2s则会触发快照机制,产生系统快照。快照采集时将应用系统进行了中断,因此捕获了更全面的代码堆栈信息,可以更深层次的定位到应用系统问题。
具体 Web 事务排查-性能剖析页面
当使用 trace 功能无法定位问题原因时,用户可以使用“性能剖析”功能,查看代码正在运行时的线程栈和代码栈。
通过弹框定位到主机资源耗费较大,可以点击主机名称进入主机详情,查看具体主机资源使用情况。
在主机详情页中,我们看到在 Web 事务响应时间调用图中的某些点的响应时间较大,鼠标悬停时同步看到 cpu 使用率较高,那么有可能是系统资源产生了瓶颈从而导致用户请求的响应时间变慢。
E 具体容器排查通过弹框定位到容器资源耗费较大时,可以点击容器名称进入容器详情,查看具体容器资源使用情况。
在容器详情页中,我们看到 Web 事务响应时间调用图中的某些点的响应时间较大,鼠标悬停时可以看到该点容器的 cpu 使用率也非常高,有可能是容器资源到达瓶颈从而导致用户请求访问时间慢,用户可以进行该容器和其所在主机资源的排查,从而进行应用资源的重分配。
0 3 其他妙用妙用1:主机容器资源监控管理
在 OneAPM Ai 中我们提供了对主机资源、容器资源的监控,用户可以查看主机资源的使用情况,包括 cpu、内存、load average、文件打开数、TCP 连接数、磁盘各分区 IO 使用率/空间使用率/ IO 读写次数/ IO 吞吐量、网络发送接收速度/发送接收包数,对主机资源进行一定的管理。当应用运行正常且主机资源耗费不高时,可以更换配置较低的机器;当测试团队在进行性能测试时亦可以使用 OneAPM Ai 查看主机资源的瓶颈,找到瓶颈点。
在容器监控中提供了 cpu 使用率、内存使用率、磁盘读写速度/读写次数、网络发送接收速度/发送接收次数指标的监控,用户还可以按主机进行过滤,查看某台主机上容器的相关情况,便于合理分配容器资源。
妙用2:探针资源监控管理
要使用 OneAPM Ai 监控应用性能,探针是稀缺资源,那么如何知道哪些自己的探针资源耗费在哪些地方?哪些应用在活跃的上报数据?哪些应用因为没有授权而不能上报数据?等等。通过“探针管理”便可一目了然。用户可便捷的进行资源的授权与释放。
通过这2篇文章,你是不是已经掌握了如何使用 OneAPM Ai 来定位应用故障问题呢!是不是跃跃欲试要试用一下呢?
Ai即将推出基础版与专业版,这简直就是小团队、创业团队的福音啊,快速定位系统问题,给用户最好的体验。进入www.oneapm.com,即可注册使用,快快了解一下吧。
ps:如果您有任何使用问题或建议,都可以联系的我们 Ai 的产品经理:tanghong@oneapm.com