摘要

本文档记录了排查 CPU 飙高问题的处理过程和解决方法,从多个方面进行分析和排查。

问题简述

在一个生产环境中发现 CPU 飙高问题,但是无法确定问题的具体原因。

排查方法

  • 使用 jstack 导出 JAVA 进程的线程栈信息,并分析线程栈信息,看能否定位到耗费 CPU 的线程。
  • 如果无法位,使用 jmap 导出 JAVA 进程的堆信息,检查是否存在内存泄漏。
  • 如果仍然无法定位,使用 ps 工具查看进程状态、资源占用情况,确定系统级别的问题。
  • 最后,根据日志、网络分析等找到具体原因。

排查过程

  1. 使用 ssh 登录到服务器上,打开终端。
  2. 输入 top 命令,进入系统监控界面。
  3. 按下方向键,将光标移动到 %CPU 列,按下 Shift + > 键,可以将进程按照 CPU 占用率的大小进行排序。
  4. 查找占用率高的进程,可通过 PID 和进程名进行识别。
  5. 使用 top -Hp 命令,可以查看占用 CPU 的线程情况。其中 是进程 ID,可以在 top 命令中查看到。 在 top 命令中,将光标移动到对应进程上,按下 H 键,会显示该进程下的线程列表。按下 Shift + > 键,可以将线程按照 CPU 占用率的大小进行排序。可以根据线程 ID 或者线程名称来定位到具体的线程。
  6. 使用 jstack 命令,可以导出进程下的线程栈信息,从而进一步分析线程情况。具体操作如下:输入 jstack -l 命令,其中 是进程 ID,可以在 top 命令中查看到。然后会输出该进程下所有线程的栈信息,可以通过线程 ID 进一步定位到具体线程。
  7. jstack -l pid > jstack.log:导出进程的线程栈信息,并保存到 jstack.log 文件中。使用时,将 pid 替换为需要排查的进程 ID。
  8. jmap -dump:live,format=b,file=heap.bin pid:导出进程的堆信息,并保存到 heap.bin 文件中。使用时,将 pid 替换为需要排查的进程 ID。
  9. ps -ef | grep pid:查看进程状态和资源占用情况。使用时,将 pid 替换为需要排查的进程 ID。
  10. tcpdump -i eth0 -nn -s0 -w tcpdump.pcap:导出网络数据包到tcpdump.pcap文件。使用时,将网卡和文件名替换为需要的值。

结果分析

通过排查,我们发现问题在业务代码中,存在一些死循环、重复计算等问题,导致 CPU 占用率过高。这些问题的出现,往往都是由于代码逻辑不严谨、数据结构设计不合理、算法复杂度高等原因导致。

解决方案

为了解决 CPU 飙高问题,我们需要修改代码,并改进算法等方面。解决方案如下:

  • 确保代码逻辑正确,消除死循环、重复计算等问题。
  • 优化数据结构和算法,尽量降低代码复杂度。
  • 针对特定业务逻辑进行优化,例如缓存、预处理等。
  • 对于需要频繁查询的数据,在数据库中建立索引等。

总结

在排查 CPU 飙高问题时,需要采用多种方法进行分析和排查,才能找到问题发生的原因。在解决 CPU 飙高问题时,需要优化代码、优化系统、优化算法等多方面进行考虑和分析,才能最终解决问题。

CPU 飙高问题排查和解决方法相关推荐

  1. json.tojsonstring 导致cpu飙高_阿里调试神器立功了!进程导致Kubernetes节点CPU飙高的排查与解决...

    来源:https://www.cnblogs.com/maxzhang1985/p/12673160.html 一.发现问题 在一次系统上线后,我们发现某几个节点在长时间运行后会出现CPU持续飙升的问 ...

  2. MySQL CPU 使用率高的原因和解决方法(来自aliyun官方文档)

    MySQL CPU 使用率高的原因和解决方法 更新时间:2017-03-17 13:25:52   分享: 用户在使用 MySQL 实例时,会遇到 CPU 使用率过高甚至达到 100% 的情况.本文将 ...

  3. MySQL CPU 使用率高的原因和解决方法

    MySQL CPU 使用率高的原因和解决方法 参考文章: (1)MySQL CPU 使用率高的原因和解决方法 (2)https://www.cnblogs.com/wyy123/p/9258513.h ...

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

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

  5. oralce load的时候使用触发器会导致load慢吗_一次FGC导致CPU飙高的排查过程

    今天测试团队反馈说,服务A的响应很慢,我在想,测试环境也会慢?于是我自己用postman请求了一下接口,真的很慢,竟然要2s左右,正常就50ms左右的. 于是去测试服务器看了一下,发现服务器负载很高, ...

  6. 一次FGC导致CPU飙高的排查过程

    今天测试团队反馈说,服务A的响应很慢,我在想,测试环境也会慢?于是我自己用postman请求了一下接口,真的很慢,竟然要2s左右,正常就50ms左右的. 于是去测试服务器看了一下,发现服务器负载很高, ...

  7. mysql利用cpu率高_MySQL CPU 使用率高的原因和解决方法

    用户在使用 MySQL 实例时,会遇到 CPU 使用率过高甚至达到 100% 的情况.本文将介绍造成该状况的常见原因以及解决方法,并通过 CPU 使用率为 100% 的典型场景,来分析引起该状况的原因 ...

  8. mysql cpu 高 原因 汇总_MySQL CPU 使用率高的原因和解决方法(来自aliyun官方文档)

    用户在使用 MySQL 实例时,会遇到 CPU 使用率过高甚至达到 100% 的情况.本文将介绍造成该状况的常见原因以及解决方法,并通过 CPU 使用率为 100% 的典型场景,来分析引起该状况的原因 ...

  9. linux服务器cpu飙高问题排查实践记录

    问题描述: 测试环境大量请求出现504错误 1.第一反应上服务器看看资源消耗情况(登陆服务器时出现卡顿) 2.使用top命令查看cpu消耗情况,查看结果如下: 很明显cpu使用率已经满了(两核CPU) ...

最新文章

  1. [美]杰克·巴尔金:算法社会中的三大法则
  2. python日期格式化
  3. 前沿分享|阿里云数据库解决方案架构师 王宏宇:云原生数据仓库AnalyticDB在零售行业的深度应用和业务价值
  4. R语言里面的循环变量
  5. 带桭字的名字_男孩带官运大气的名字有气魄有能力-可爱点
  6. 史蒂夫 乔布斯(Steve Jobs)在斯坦福大学2005年毕业典礼上的演讲
  7. 官方再曝vivo X30系列拍照新技能:主角光环不虚焦
  8. python04-集合与字典
  9. 基础: 有效值、RMS、振幅、幅度概念
  10. python桌面爬虫_爬虫项目实战十三:爬取zol桌面壁纸
  11. modelsim仿真加速注意点
  12. ARP/RARP协议报文格式
  13. Error contacting service. It is probably not running解决
  14. 使用纯CSS实现未知尺寸的图片(但高宽都小于500px)在500px的正方形容器中水平和垂直居中。你有几种方法?
  15. DDR,DDR2,DDR3,DDR4,LPDDR的区别
  16. 注定与众不同_没有原因的数据注定会使我们失败
  17. 你还在为移动端选择器picker插件而捉急吗?
  18. 对Windows10虚拟桌面的简单研究
  19. uva12124 组装电脑
  20. Undertow,Tomcat和Jetty服务器之间的区别

热门文章

  1. OPPO图片地理信息查看和设置
  2. List集合的复制方式
  3. 实习生总结报告(讲述上海实习的一段经历)
  4. 管理类联考——英语——趣味篇——完型填空
  5. C语言中sbit字节操作方法,c语言中bit和sbit的区别
  6. 【ubantu20.04下安装向日葵】
  7. 无酒精啤酒行业调研报告 - 市场现状分析与发展前景预测
  8. cvx求解问题中遇到二进制变量与连续变量乘积的形式,如何转化
  9. 创意与策划——网络营销的魂与骨
  10. 【grid网格布局】