Linux 服务器CPU超高如何快速定位

news2025/7/15 7:41:36

前言
在生产环境中有时会遇见服务器CPU超高的问题,特别是重大版本发布后如果有内存泄露很容出现CPU超高,严重可能会达到100%。现在我们使用的服务器都是多核CPU,当出现CPU告警我们需要及时发现问题代码并处置,不然严重情况下会导致服务器宕机。

如何快速定位
1、找到最耗CPU进程
2、找到最耗CPU线程
3、找到线程堆栈信息
4、找到问题代码并处置

定位工具top

top [-] [d] [p] [q] [c] [C] [S] [n]
参数:
d:指定每两次屏幕信息刷新之间的时间间隔,当然用户可以使用s交互命令来改变之
p:通过指定监控进程ID来仅仅监控某个进程的状态
q:该选项将使top没有任何延ch迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行
S:指定累计模式
s:使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险
i:使top不显示任何闲置或者僵死进程
c:显示整个命令行而不只是显示命令名
H:显示线程
本次定位我们需要用到:
c:显示整个命令行而不只是显示命令名
H:显示线程

小试牛刀
我们以测试环境为例,找出最耗CPU线程堆栈并定位代码
1、找到最耗CPU的进程
执行top -c ,显示进程运行信息列表,c参数作用是显示整个命令行
键入P (大写p),进程按照CPU使用率排序
图示:
在这里插入图片描述
如上图,最耗CPU的进程PID为1,查看命令行可以看到是loanOrder服务。

2、找到最耗CPU的线程
top -Hp 1
显示一个进程的线程运行信息列表,参数H就是显示线程,参数p则是仅仅监控pid
键入P (大写p),线程按照CPU使用率排序
图示:
在这里插入图片描述
如上图,进程1内,最耗CPU的线程PID为750。

3、找到线程堆栈信息
3.1 将线程PID转化为16进制,需要使用命令 printf “%x\n” 线程PID
[root@devops-01 /]# printf “%x\n” 750
2ee
如上750的16进制2ee,之所以要转化为16进制,是因为堆栈里线程id是用16进制表示的。

3.2 根据查到进程下线程750十六进制2ee过滤得到堆栈信息,此时需要使用命令
jstack 进程PID | grep ‘线程PID’ -C5 --color
jstack 1 | grep ‘2ee’ -C5 --color
图示:
在这里插入图片描述

如上图,找到了耗CPU高的线程对应的线程名称“http-nio-7014-exec-9"”,以及看到了该线程正在执行代码的堆栈。

4、根据堆栈信息找到问题代码并合理处置
目前是在锁等待的状态。在实际的内存泄露场景中,一般此时就会展示发生内存泄露的代码。

总结:用命令找到影响CPU的堆栈代码是最方便的,当然也可以采用arthas诊断工具,只是需要安装工具包然后也是看控制台找到线程ID,然后根据线程堆栈定位代码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/369357.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【阿旭机器学习实战】【36】糖尿病预测---决策树建模及其可视化

【阿旭机器学习实战】系列文章主要介绍机器学习的各种算法模型及其实战案例,欢迎点赞,关注共同学习交流。 【阿旭机器学习实战】【36】糖尿病预测—决策树建模及其可视化 目录【阿旭机器学习实战】【36】糖尿病预测---决策树建模及其可视化1. 导入数据并…

Datacom-HCIE考试经验分享

我是誉天Datacom秦同学。作为誉天众多通过Datacom-HCIE考试的学员之一,我感到很荣幸。 首先说说自学的感受吧: 我是从2020年开始接触网络行业的,听单位的前辈说华为的HCIE认证是行业含金量最高的证书,从那时起心里就种下了一个“I…

用 Visual Studio 升级 .NET 项目

现在,你已可以使用 Visual Studio 将所有 .NET 应用程序升级到最新版本的 .NET!这一功能可以从 Visual Studio 扩展包中获取,它会升级你的 .NET Framework 或 .NET Core 网页和桌面应用程序。一些项目类型仍正在开发中并将在不久的未来推出&a…

spring Bean的生命周期 IOC

文章目录 1. 基础知识1.1 什么是 IoC ?2. 扩展方法3. 源码入口1. 基础知识 1.1 什么是 IoC ? IoC,控制反转,想必大家都知道,所谓的控制反转,就是把 new 对象的权利交给容器,所有的对象都被容器控制,这就叫所谓的控制反转。 IoC 很好地体现了面向对象设计法则之一 —…

适合运动时戴的蓝牙耳机有哪些、2023热门运动耳机推荐

在运动时听音乐,歌曲里的节奏、歌词都可以改变人的心态以及分散注意力,还能有效提升运动后的效果。在运动中听音乐,已经变为了一种随处可见的习惯。那么一款好的运动耳机,可以让运动更有激情,也能更好地享受运动的乐趣…

Pikachu靶场(暴力破解)

目录标题暴力破解(登录)基于表单的暴力破解验证码绕过(on server)验证码绕过(on client)token防爆破?上学期用这个靶场写过作业,现在抽空给它过一遍,由于需要抓包,从而通过小皮,使用本地(127.0…

RestTemplate 报错 I/O error on POST request for

问题: org.springframework.web.client.ResourceAccessException: I/O error on POST request for "http://www.xxx.com/xxx/xxx/xxx": Read timed out; nested exception is java.net.SocketTimeoutException: Read timed out 场景: 在代码…

【mysql和clickhouse 查看当前链接进程信息】

前言 我们有时候服务器会突然内存溢出,这时候我们会去服务器上查看,是否是Mysql查询的时候用的时间太长,我们去查看当前进程情况。 正文 ClickHouse自带用于记录系统信息的系统库system,通过processes表,我们可以查…

H5项目中使用微信JS-SDK(以H5项目批量上传图片为例,兼容IOS及安卓)

H5项目中使用微信图片上传相关sdk,主要用于解决 1.安卓手机无法一次选择多张图片进行上传问题;2.控制IOS系统手机一次可无限量选择图片上传的问题 一、准备工作:公众号配置 验证所需使用的sdk是否符合需求 可在使用场景中,打开微…

MOS管选型参数:VGS(th)

MOS管选型参数:VGS(th) VGS(th):开启电压(阀值电压)。当外加栅极控制电压 VGS 超过 VGS(th) 时,漏区和源区的表面反型层形成了连接的沟道。应用中,常将漏极短…

如何拥有自己的Gitee代码仓库

本教程适用码云代码托管平台 https://gitee.com/ 首先在电脑上安装Git(哔站有安装Git教程)和注册gitee账号后再来阅读此教程 1、在设置页面中点击 SSH公钥 2、点击 怎样生成公钥 3、点击公钥管理 4、点击 生成\添加SSH公钥 5、打开终端 输入如图红框中的…

MyBatis学习笔记(二) —— 搭建MyBatis项目

2、搭建MyBatis 2.1、开发环境 IDE:idea 2019.2 构建工具:maven 3.5.4 MySQL版本:MySQL 8 MyBatis版本:MyBatis 3.5.7 MySQL不同版本的注意事项 1、驱动类 driver-class-name MySQL 5版本使用jdbc5驱动,驱动类使用…

【人工智能 AI】Robotic Process Automation (RPA) 机器人流程自动化 (RPA)

目录 ROBOTIC PROCESS AUTOMATION SERVICES机器人流程自动化服务 What is RPA? 什么是机器人流程自动化?

【storybook】你需要一款能在独立环境下开发组件并生成可视化控件文档的框架吗?(三)

storybook插件addons核心插件插件APIargTypes写文档组件注释法MDX生成在线可视化UI文档上一篇: https://blog.csdn.net/tuzi007a/article/details/129194267插件addons 插件用于增强storybook的UI功能。 核心插件 storybook/addon-essentials 它几乎控制了整个s…

Java实现阴历日历表(附带星座)

准备工作 1.无敌外挂(GitHub直达源码) Nobb 直击灵魂 https://github.com/xuyishanBD/Java_create_calendar.git2.maven配置(如果没有走上面的捷径) <dependencies><dependency><groupId>net.sourceforge.javacsv</groupId><artifactId>javac…

Pytorch从零开始训练模型【识别数字模型】并测试

1 准备数据集 import torch import torchvision # 去网上下载CIFAR10数据集【此数据集为经典的图像数字识别数据集】 # train True 代表取其中得训练数据集&#xff1b; # transform 参数代表将图像转换为Tensor形式 # download 为True时会去网上下载数据集到指定路径【root】…

用Python获取弹幕的两种方式(一种简单但量少,另一量大管饱)

前言 弹幕可以给观众一种“实时互动”的错觉&#xff0c;虽然不同弹幕的发送时间有所区别&#xff0c;但是其只会在视频中特定的一个时间点出现&#xff0c;因此在相同时刻发送的弹幕基本上也具有相同的主题&#xff0c;在参与评论时就会有与其他观众同时评论的错觉。 在国内…

零基础想转行学习Python,该如何学习,有学习路线分享吗?(2023年给初学者的建议)

Python属于一种面向对象、解释性的高级语言&#xff0c;它如今在众多领域都被应用&#xff0c;包括操作系统管理、Web开发、服务器运维的自动化脚本、科学计算、桌面软件、服务器软件(网络软件)、游戏等方面&#xff0c;且Python在今后将被大规模地应用到大数据和人工智能方面。…

MPI编程size总为1 解决方案

之前遇到的问题在这儿mpi编程 comm.Get_rank()全为0而comm.Get_size()全为1应该怎么办&#xff1f;_wennyLee的博客-CSDN博客 后来&#xff0c;我尝试了在pycharm的terminal中运行程序 mpiexec -n 4 test.py 但是又出现了新的问题↓ 然后为了解决”不是有效的 Win32 应用程序…

前端白屏的检测方案,让你知道自己的页面白了

前言 页面白屏&#xff0c;绝对是让前端开发者最为胆寒的事情&#xff0c;特别是随着 SPA 项目的盛行&#xff0c;前端白屏的情况变得更为复杂且棘手起来&#xff08; 这里的白屏是指页面一直处于白屏状态 &#xff09; 要是能检测到页面白屏就太棒了&#xff0c;开发者谁都不…