主机cpu突然飙高,如何快速排查问题
[问题发现]
使用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突然飙高,如何快速排查问题的更多相关文章
- 记一次yarn导致cpu飙高的异常排查经历
yarn就先不介绍了,这次排坑经历还是有收获的,从日志到堆栈信息再到源码,很有意思,下面听我说 问题描述: 集群一台NodeManager的cpu负载飙高. 进程还在但是看日志已经不再向Resourc ...
- rocketmq 主机负载异常飙高问题的解决
最近在部署rocketmq到物理机时, 发现并解决了一个主机Load异常飙高的问题, 觉得有必要记录一下. 我们采用了rocketmq(https://github.com/alibaba/Rocke ...
- 系统CPU飙高,怎么排查?
cpu是整个电脑的核心计算资源,对于一个应用进程来说,cpu的最小执行单元是线程. 导致cpu飙高的原因有几个方面: cpu上下文切换过多,对于cpu来说,同一时刻下每个cpu核心只能运行一个线程,如 ...
- java 一次CPU占用过高问题的排查及解决
最近一段时间 某台服务器上的一个应用总是隔一段时间就自己挂掉 用top看了看 从重新部署应用开始没有多长时间CPU占用上升得很快 排查步骤 1.使用top 定位到占用CPU高的进程PID ...
- 记一次linux通过jstack定位CPU使用过高问题或排查线上死锁问题
一.java定位进程 在服务器中终端输入命令:top 可以看到进程ID,为5421的cpu这列100多了. 记下这个数字:5421 二.定位问题进程对应的线程 然后在服务器中终端输入命令:top -H ...
- MongoDB CPU使用较高,如何排查?
前言 首先,我们简单梳理一下,CPU 在什么情况下才算负载较高?负载查看是通过"uptime"命令查看.大家都知道,命令显示的结果分别表示1分钟.5分钟.15分钟的负载情况,这点就 ...
- linux云主机cpu一直很高降不下来,系统日志报nf_conntrack: table full, dropping packet.
在启用了iptables web服务器上,流量高的时候经常会出现下面的错误: ip_conntrack: table full, dropping packet 这个问题的原因是由于web服务器收到了 ...
- 你要偷偷学会排查线上CPU飙高的问题,然后惊艳所有人!
GitHub 20k Star 的Java工程师成神之路,不来了解一下吗! GitHub 20k Star 的Java工程师成神之路,真的不来了解一下吗! GitHub 20k Star 的Java工 ...
- STORM在线业务实践-集群空闲CPU飙高问题排查
源:http://daiwa.ninja/index.php/2015/07/18/storm-cpu-overload/ 2015-07-18AUTHORDAIWA STORM在线业务实践-集群空闲 ...
随机推荐
- 使用wait/notify实现线程间的通信
之前对Java多线程中的wait/notify机制理解都不是很清晰,最近看了一本技术书,通过里面的讲解再配上一些博客,终于算是对wait/notify有了进一步的理解. 下面就来说说我对这两个方法的认 ...
- 深入理解Java虚拟机(字节码执行引擎)
深入理解Java虚拟机(字节码执行引擎) 本文首发于微信公众号:BaronTalk 执行引擎是 Java 虚拟机最核心的组成部分之一.「虚拟机」是相对于「物理机」的概念,这两种机器都有代码执行的能力, ...
- Python自学day-12
一.Mysql概述 RDBMS:关系型数据库管理系统.Mysql是一种RDBMS. Oracle:收费 Mysql:Oracle旗下免费 Sqlserver:微软 DB2:IBM Postgresql ...
- 移动端布局(viewport)方法
viewport默认有6个属性 width: 设置viewport的宽度(即之前所提及到的,浏览器的宽度详),这里可以为一个整数,又或者是字符串"width-device" ini ...
- 【朝花夕拾】Android自定义View篇之(五)Android事件分发机制(上)Touch三个重要方法的处理逻辑
前言 转载请注明,转自[https://www.cnblogs.com/andy-songwei/p/10998855.html]谢谢! 在自定义View中,经常需要处理Android事件分发的问题, ...
- Linux运维工程师学习成长路线
不过大家的留言都很精彩,希望大家也可以去留言区逛一逛~~ 好在这不是最后一期送书,之前已经有了好多活动,小编一定继续为大家多送些福利. 希望大家可以一如既往的关注脚本之家,支持爱你们的小编,共同进步! ...
- Python笔记【3】_元组学习
#!/usr/bin/env/python #-*-coding:utf-8-*- #Author:LingChongShi #查看源码Ctrl+左键 ''' tuple:以圆括号“()”括起来,以“ ...
- DataBinding的用法
一.基本介绍 DataBinding数据绑定库是一种支持库,借助该库,可以使用声明性格式(而非程序化地)将布局中的界面组件绑定到应用中的数据源.这是官方给出的介绍. 那么为什么要使用DataBindi ...
- 走进python
python史 1.python之父 Guido van Rossum 2.python的优缺点 优点:开发效率高,可跨平台,可嵌入,可扩展,优雅简洁 缺点:运行稍慢,代码不能加密,不能实现真正的多线 ...
- HDU 5616:Jam's balance(背包DP)
http://acm.hdu.edu.cn/showproblem.php?pid=5616 题意:有n个物品,每个重量为w[i],有一个天平,你可以把物品放在天平的左边或者右边,接下来m个询问,问是 ...