线上cpu飙高排查步骤:

  1. top命令查看进程与CPU的使用情况
  2. 判断是否GC导致CPU冲高, 主要看GC频率和内存使用情况,  具体命令可参考: jvm常用指令
  3. 如果不是GC问题, top -Hp PID 查看占用CPU最高的进程的线程情况
    1. 确定线程后,计算线程ID对应的十六进制值: printf "%x\n" <java_thread_id>
    2. 将该线程堆栈内容输出: jstack <java_pid> | grep <线程id十六进制值> -A 30 【-A 30表示向下打印30行】, 这时就可以看到业务代码中那一部分使CPU飙高了。这里的信息可以精确到java代码的类、方法、行数: 
  4. 根据第三步的结果, 修改业务逻辑代码

top命令及参数说明:

1、线上CPU使用情况查看: top命令

上图中,我的top命令输出的结果的与你们的输出结果是不是不太一样,我的字体是红色,而且展示了cpu的个数和每个的私用情况, 还有就是内存的使用是一个图形结构。 而你们的top命令截图应该是下面这样的:

这需要记住几个按键和作用:

  • 按z可更改top追踪的颜色
  • 1键可查看系统上每个 CPU 内核的图形表示
  • m键以图形方式显示内存使用情况
  • t 图形的方式显示CPU使用情况

1.1 top参数信息

  1. up *** days, *** min :说明此服务器连续运行 *** 天 *** 分钟
  2. *** users :  当前登录用户数
  3. load average:***, ***, *** :  系统负载,即任务队列的平均长度。三个数值分别为1分钟、5分钟、15分钟前到现在的平均值

1.2  Tasks 系统任务

  1. total:总进程数
  2. running: 正在执行进程数
  3. sleeping :正在休眠进程数
  4. stoped : 暂停进程数
  5. zombie: 僵尸进程数

1.3 %Cpu 系统CPU使用情况

  1. us : 系统用户占用比例
  2. sy: 系统内核占用比例
  3. ni: 优先级调度占用比例
  4. id:空闲CPU
  5. wa: I/O 等待占用比例
  6. hi:硬件中断占用
  7. si:软件中断占用
  8. st:虚拟化占用

1.4 Kib Mem 系统内存使用情况

  1. total:总内存空间
  2. free:空闲内存
  3. used:已用内
  4. buff/cache:物理内存和交换内存的缓冲区总和。

1.5 Kib Swap 系统交换空间使用情况

  1. total:总交换空间
  2. free:空闲交换空间
  3. used:已用交换空间
  4. avail Mem:可用物理空间。

1.6 运行进程信息, 也是我们最常使用的数据

  1. PID: 进程ID
  2. USER: 进程所有者
  3. PR: 优先级
  4. NI: 进程优先级
  5. VIRT: 虚拟内存
  6. RES:  实际使用的物理内存
  7. SHR: 共享内存大小
  8. S: 进程状态(D=不可中断的睡眠状态,R=运行中或可运行,S=睡眠中,T表示已跟踪以及已停止,Z=僵停
  9. %CPU: 上次更新到现在的cpu时间占用百分比
  10. %MEM: 进程使用的物理内存百分比
  11. TIME+:  进程使用的cpu时间总计
  12. COMMAND: 命令名/命令行

2. top命令常用参数 :分析具体线程 top -Hp PID

  1. 1.  H:显示线程
  2. 2. p:根据CPU使用百分比大小进行排序。

使用top -Hp PID 命令后,显示的信息与top 命令有一些不同: 这里没有了Task 而是展示了 Threads, 标识当前进程中总共有多少个线程。

参考文档:

top命令详解

线上问题处理1---CPU飙高问题定位相关推荐

  1. 简单的cpu飙高问题定位脚本

    原文链接: https://blog.csdn.net/manzhizhen/article/details/79333676 老司机在定位和解决问题时都有着自己的一套方法论,总不能老踩一些重复的坑是 ...

  2. 线上CPU飙高诊断定位

    1. 先准备一段java程序,后台运行 2. 使用 top命令查看cpu的进程使用情况 在这里看到了一个进程占据了99.3%的cpu利用率,这显然是出现了cpu飙升的情况,这会到期系统其他进程得不到c ...

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

    作者 l Hollis 来源 l Hollis(ID:hollischuang) 前段时间我们新上了一个新的应用,因为流量一直不大,集群QPS大概只有5左右,写接口的rt在30ms左右. 因为最近接入 ...

  4. 面试官:线上服务CPU飙高怎么排查?

    用jstack排查 先执行top,找到CPU占用比较高的进程 jstack 进程id > show.txt 找到进程中CPU占用比较高的线程,线程id转为16进制 到show.txt文件中根据线 ...

  5. jvm 崩溃日志设置_记一次JVM疯狂GC导致CPU飙高的问题解决

    背景 线上web服务器不时的出现非常卡的情况,登录服务器top命令发现服务器CPU非常的高,重启tomcat之后CPU恢复正常,半天或者一天之后又会出现同样的问题.解决问题首先要找到问题的爆发点,对于 ...

  6. JVM优化之系统CPU飙高和GC频繁

    本文来说下JVM优化之系统CPU飙高和GC频繁 文章目录 概述 Full GC次数过多 CPU过高 某个线程进入WAITING状态 死锁 本文小结 概述 处理过线上问题的同学基本上都会遇到系统突然运行 ...

  7. 生产环境CPU飙高问题解决,记一次完整解决过程

    一.发现问题 前段时间我们新上了一个新的应用,因为流量一直不大,集群QPS大概只有5左右,写接口的rt在30ms左右. 因为最近接入了新的业务,业务方给出的数据是日常QPS可以达到2000,大促峰值Q ...

  8. 记一次jvm疯狂gc导致CPU飙高的问题解决

    在环境上遇到tomcat频繁gc导致cpu load飙高的问题,本来想自己写一个文章的,看到这个偷懒转载一下. 线上web服务器不时的出现非常卡的情况,登录服务器top命令发现服务器CPU非常的高. ...

  9. CPU飙高的常见场景及处理办法

    mysql进程飙高 简述 各位服务端开发的同学,在使用mysql的过程中,大概都有遇到过cpu突然飙高到的情况,比如达到了200%.数据库在执行查询或者修改数据时,系统需要消耗大量的cpu算力来维护存 ...

  10. 记一次服务器CPU飙高使用率超过100%原因分析(Arthas)

    文章目录 背景 一.告警分析 二.原因分析 1.找到java进程 2.进入 Arthas 3. 使用 Arthas 找到CPU占用最高的线程 4.定位原因 5.解决方案 总结 背景 某天下午频繁收到预 ...

最新文章

  1. boost asio 异步实现tcp通讯
  2. linux脚本运行java程序设计_Java运行Shell脚本
  3. CentOs7安装JDK/Tomcat/Git/Gradle
  4. 【转】Elasticsearch5.0 安装问题集锦
  5. vue请求封装,Store-状态管理部分(文档笔记)
  6. linux安装rabbitmq过程,Linux安装RabbitMQ
  7. C++模板中关键字typename与class的区别
  8. ubuntu安装过程中遇到的一些问题及解决办法。
  9. HoloLens 2开发:HoloLens开发VS安装与配置
  10. (转)首个比特币投资基金在加拿大获批上线!
  11. linux 16.04系统下载,【Ubuntu1604镜像下载】乌班图系统Ubuntu 16.04 官方正式版-开心电玩...
  12. Python整理PEER所下载的地震波源数据——提取地震波至txt+生成地震波反应谱
  13. SAP License:影响中国信息化全面预算管理八大成功案例
  14. idea中xml文件用浏览器打开
  15. 【学习笔记】黑马程序员Java课程学习笔记(更新至第12章---集合)
  16. 滤波器时间域与空间域幅频特性matlab绘图方法
  17. 树莓派开机自启动opencv程序脚本及报错分析及拓展
  18. 【Linux】RHCE -- RHCSA 认证考试 模拟练习题解析
  19. Objective-C基础教程读书笔记(3)
  20. 转发:博士毕业,也写一些发文章的心得

热门文章

  1. 菜鸡的求学之路-JavaScript
  2. 计算机的自动播放功能有什么用,禁用自动播放功能的几种方法
  3. 【培训版】《最强大脑记忆力训练教程》[2017年7月份更新]
  4. 服务器usb驱动安装系统安装失败怎么办,USB3.0驱动无法安装失败怎么办?USB驱动失败失败的解决方法...
  5. 论文阅读-LEARNED STEP SIZE QUANTIZATION
  6. 计算机组成x什么意思,cpu后面带x是什么意思
  7. python 写命令行_一个用python写的用命令行看糗百的小工具
  8. leetcode (Find All Numbers Disappeared in an Array)
  9. 电信主机托管费用_服务器托管的收费标准(必读)
  10. 青铜器RDM与PTC Windchill协同构建货真价实的PLM解决方案