[问题发现]

使用zabbix软件监控服务器时发现cpu突然异常,在业务主机上使用top命令查看系统的整体运行情况,使用top命令后发现mysqld占用CPU特别高,初步判断可能是mysqld出现问题,需要排查:

[排查步骤]

Step1:

登录oneapm ai平台后可以看到应用列表的总览视图,在总览视图中可以看到所有应用的名称以及相关指标信息,同时我们还可以根据应用颜色变化来判断每个应用的指标变化情况。本例中在Acmeair应用的“用户体验一览”选项卡下可以看到它的业务在最近一段时间内出现了71次失败,我们需要点击此应用查看详情,如图一:

图一

Step2:

利用top命令已经基本排查出是数据库导致CPU占用过高,我们可以通过查看调用数据库的节点发现问题。

在AI平台上点击某个应用进入到该应用的主页,进入之后可以看到该应用的总体拓扑图,总览拓扑图会把应用中所有Tier、数据库、远程服务与其他应用之间的调用关系描绘出来,并且显示他们的性能情况。当某个节点的颜色为黄色或红色时,代表该Tier的健康状态是告警或严重。

点击拓扑图右上侧的“数据库-展开”选项,可以看到调用mysql数据库的节点,点击该节点(例如下图中的Webapp11节点),出现的弹框中有总览、节点、Web事务入口、Web事务、主机和容器几个选项卡。“Web事务入口”可以看到某个应用在应用环境中请求的起始点;而“Web事务”展示了一些用户最关心的的指标,从而让用户对当前查看Web事务的健康状况产生总体的了解。

点击“Web事务入口”选项可以看到对应接口的响应时间正常,代表对应接口表现正常,如图二;我们需要继续排查“Web事务”部分。

图二

点击“Web事务”选项,可以给出该节点中所有Web事务的响应时间及调用次数,点击“响应时间”可以将响应时间从高往低排序,从而确认缓慢的“Web事务”,如图三。本例中,点击响应时间最长的Web事务查看详情。

图三

Step3:

点击响应时间最长的一个Web事务后,左上角“总览”下“Web事务”的标签会显示出该Web事务的平均响应时间,点击某一响应时间较长的时间点,可以向下钻取到所选时间段,精准定位到问题时间点。同时在Web事务的下方可以看到该时间段内的最慢组件,如图四。

在本例中下钻到具体时间点后,可以在“总览”界面的“最慢组件”下看到是一个select语句比较耗时,再次佐证了我们的想法。

图四

Step4:

Trace是对这段时间内该用户缓慢或错误请求的详细追踪。

钻取到问题时间段后,我们查看该时间范围内的Trace列表,如图五。因为同一个Web事务调取到的后端信息都是相同的,所以我们只需要选取其中的一条或几条最优代表性(例如响应时间较长)的Trace进行问题定位即可。

在本例中我们按响应时间进行排序降序排列后,选择第一条进行Trace详情查看。

图五

点击所选Trace之后,在Trace概要中可以看到该Trace中的最慢组件,如图六。例如图六中我们可以在Trace的总览页面发现customer/select语句耗时较长。

图六

弹框中同样还可以查看该Trace中的堆栈调用详情。点击“详情”选项卡,如图七,可以看到该sql语句对接口的影响,从而进行代码的优化。在本例中,我们可以看到SQL语句的耗时百分比较高,可以看出该SQL语句对接口影响较大。

图七

点击该SQL语句 附加信息栏中的图标,可以查看到耗时较长的的sql语句详情。我们也可以弹框左上角中的“SQL”选型卡,在弹框中也可以看到语句详情、该语句的响应时间及调用次数,如图八、图九:

图八

图九

至此,发现问题原因以及影响接口已全部排查出来!

主机cpu突然飙高,如何快速排查问题的更多相关文章

  1. 记一次yarn导致cpu飙高的异常排查经历

    yarn就先不介绍了,这次排坑经历还是有收获的,从日志到堆栈信息再到源码,很有意思,下面听我说 问题描述: 集群一台NodeManager的cpu负载飙高. 进程还在但是看日志已经不再向Resourc ...

  2. rocketmq 主机负载异常飙高问题的解决

    最近在部署rocketmq到物理机时, 发现并解决了一个主机Load异常飙高的问题, 觉得有必要记录一下. 我们采用了rocketmq(https://github.com/alibaba/Rocke ...

  3. 系统CPU飙高,怎么排查?

    cpu是整个电脑的核心计算资源,对于一个应用进程来说,cpu的最小执行单元是线程. 导致cpu飙高的原因有几个方面: cpu上下文切换过多,对于cpu来说,同一时刻下每个cpu核心只能运行一个线程,如 ...

  4. java 一次CPU占用过高问题的排查及解决

    最近一段时间  某台服务器上的一个应用总是隔一段时间就自己挂掉      用top看了看  从重新部署应用开始没有多长时间CPU占用上升得很快 排查步骤 1.使用top 定位到占用CPU高的进程PID ...

  5. 记一次linux通过jstack定位CPU使用过高问题或排查线上死锁问题

    一.java定位进程 在服务器中终端输入命令:top 可以看到进程ID,为5421的cpu这列100多了. 记下这个数字:5421 二.定位问题进程对应的线程 然后在服务器中终端输入命令:top -H ...

  6. MongoDB CPU使用较高,如何排查?

    前言 首先,我们简单梳理一下,CPU 在什么情况下才算负载较高?负载查看是通过"uptime"命令查看.大家都知道,命令显示的结果分别表示1分钟.5分钟.15分钟的负载情况,这点就 ...

  7. linux云主机cpu一直很高降不下来,系统日志报nf_conntrack: table full, dropping packet.

    在启用了iptables web服务器上,流量高的时候经常会出现下面的错误: ip_conntrack: table full, dropping packet 这个问题的原因是由于web服务器收到了 ...

  8. 你要偷偷学会排查线上CPU飙高的问题,然后惊艳所有人!

    GitHub 20k Star 的Java工程师成神之路,不来了解一下吗! GitHub 20k Star 的Java工程师成神之路,真的不来了解一下吗! GitHub 20k Star 的Java工 ...

  9. STORM在线业务实践-集群空闲CPU飙高问题排查

    源:http://daiwa.ninja/index.php/2015/07/18/storm-cpu-overload/ 2015-07-18AUTHORDAIWA STORM在线业务实践-集群空闲 ...

随机推荐

  1. kubernetes实战篇之windows添加自签ca证书信任

    系列目录 由于服务端设置了https访问,因此如果通过浏览器访问时会提示证书不被信任,但是仍然可以通过处理继续访问.但是在自动化环境中,都是通过命令来请求的,这样不受信任的https就会报错误,这样我 ...

  2. WPF基于3D对象捕获鼠标点击事件

    ModelUIElment3DUIElment3D是.NET3.5新增的类,替代了ModelVisual3D.ModelVisual3D有2个派生类ModelUIElment3D和ContainerU ...

  3. 【Shell学习笔记3》实践项目自动部署脚本】shell中获取返回值、获取当前sh文件路径

    原创部分: 1.获取返回值 #This is a shell to Deploy Project #!/bin/bashcheck_results=`ps -ef | grep "java& ...

  4. 找不到 main 方法

    前几天打开了好久不用的eclipse,发现报了个奇怪的错误 ***中找不到 main 方法, 请将 main 方法定义为: public static void main(String[] args) ...

  5. 大白话5分钟带你走进人工智能-第31节集成学习之最通俗理解GBDT原理和过程

    目录 1.前述 2.向量空间的梯度下降: 3.函数空间的梯度下降: 4.梯度下降的流程: 5.在向量空间的梯度下降和在函数空间的梯度下降有什么区别呢? 6.我们看下GBDT的流程图解: 7.我们看一个 ...

  6. 统计学习方法9—EM算法

      EM算法是一种迭代算法,是一种用于计算包含隐变量概率模型的最大似然估计方法,或极大后验概率.EM即expectation maximization,期望最大化算法. 1. 极大似然估计   在概率 ...

  7. redux和react-redux做简单组件控制

    这次我们用两种方式实现以下要求 1.三个组件 2.第一个组件有两个按钮 分别控制第二和第三个组件年龄和姓名的改变 3第二个组件展示姓名,第三个组件展示年龄 用到哪些插件 store  redux 一 ...

  8. ABP开发框架前后端开发系列---(15)ABP框架的服务端和客户端缓存的使用

    缓存在一个大型一点的系统里面是必然会涉及到的,合理的使用缓存能够给我们的系统带来更高的响应速度.由于数据提供服务涉及到数据库的相关操作,如果客户端的并发数量超过一定的数量,那么数据库的请求处理则以爆发 ...

  9. iOS自动化探索(十)代码覆盖率统计

    iOS APP代码覆盖率统计 今年Q3季度领导给加了个任务要做前后端代码覆盖率统计, 鉴于对iOS代码代码比较熟就选择先从iOS端入手,折腾一整天后终于初步把流程跑通了记录如下 覆盖率监测的原理 Xc ...

  10. web应用分页

    1. 场景描述 目前大部分的应用程序中都会用到分页功能,以便减少前端浏览器及后台服务器的压力,以及其他方面的考虑. (1)分页从概念上可分为逻辑分页和物理分页,逻辑分页主要是通过应用程序(前端或者后端 ...