线上CPU100%排查(转)

线上CPU100%问题总结及解决方案 我们在生产实践中或多或少遇见过CPU100%的问题,如果没有处理过这些问题,第一次遇见多少有点手忙脚乱不知道该怎么处理,而且这个问题也是面试过程中老生常谈的问题,掌握和解决这类问题对我们提升有很大的帮助,接下来我们就来聊一下有哪些问题会导致CPU100%,以及该如何处理解决这类问题。 阅读详情

生产服务器上部署了几个java程序,突然出现了CPU100%的异常告警,你如何定位出问题呢?

以下为两种系统下的排查步骤,都是一模一样的,只是命令稍有区别

  • 查消耗cpu最高的进程PID
  • 根据PID查出消耗cpu最高的线程号
  • 根据线程号查出对应的java线程,进行处理

准备一行死循环代码 并运行:

		for (int i = 0; i < 100; ) {
			i = i * i;
		}
windows版(windows server)

查消耗cpu最高的进程PID

手边没有windows server机器,我以win 10为例,截图给大家看一下,先调出PID显示项!
在这里插入图片描述
然后发现进程PID如下图所示,为1732

在这里插入图片描述
根据PID查出消耗cpu最高的线程号

这里用到微软的工具Process Explorer v16.22,地址如下
https://docs.microsoft.com/zh-cn/sysinternals/downloads/process-explorer
在这里插入图片描述
发现最耗cpu的线程的TId为10100
这是十进制的数据,转成十六进制为2774

根据线程号查出对应的java线程,进行处理
执行命令,导出进程快照 jstack -l 1732 > c:/1732.stack (指定位置)
在这里插入图片描述
打开文件1732.stack 搜索 2744 可定位到对应的线程
在这里插入图片描述

linux版

查消耗cpu最高的进程PID
执行命令
执行top -c ,显示进程运行信息列表。按下P,进程按照cpu使用率排序
在这里插入图片描述
根据PID查出消耗cpu最高的线程号
执行命令
top -Hp 3033 ,显示一个进程的线程运行信息列表。按下P,进程按照cpu使用率排序
如下图所示,PID为3034的线程耗费cpu最高
在这里插入图片描述
这是十进制的数据,转成十六进制为0xbda
根据线程号查出对应的java线程,进行处理
执行命令,导出进程快照

jstack -l 3033 > ./3033.stack

然后执行,grep命令,看线程0xbda做了什么

cat 3033.stack |grep ‘bda’ -C 8

在这里插入图片描述

原文地址:https://mp.weixin.qq.com/s/MpFrTvKg8Gde5FrhmcfePQ

Java 应用程序CPU 100%问题排查优化实战 今天再给大家讲一个 CPU 100% 优化排查实战。 收到运维同学的报警,说某些服务器负载非常高,让我们开发定位问题。拿到问题后先去服务器上看了看,发现运行的只有我们的 Java 应用程序。于是先用 ps 命令拿到了应用的 PID。 ps:查看进程的命令;PID:进程 ID。ps -ef | grep java 可以查看所有的 Java 进程。前面也曾讲过。 接着使用 top -Hp pid 将这个进程的线程显示出来。输入大写 P 可以将线程按照 CPU 使用比例排序,于是得到以下结果。 阅读详情

相关推荐

ABAP代码检查(Code Review)

1、SLIN 扩展程序检查 也可通过(SE38工具栏->检查-扩展程序检查) 进入 2、ATC 检查 通过<SE38菜单栏-检查-ABAP测试主控室> 或事物代码SCI, 支持自定义检查变式 SCI可以配置检查变式满足特殊需求,配置对象集用于批量检查 3、通过ABAP测试主控室实现统一管理,定期检查作业和监控功能(事务代码ATC) 参考 SLIN...

u012232542的博客 6063

.net 编码常见问题

问题一: windows service 启动时需要用死循环来控制程序,如果不开启异步,死循环会导致windows sevice 程序无法启动,代码情况如下 protected override void OnStart(string[] args) { writeLog(string.Format("{0}-已启动", base.Service...

weixin_30640291的博客 69

Opencv4.5.1 微信二维码识别功能 QRCode 编译与使用 C++

部分参考:https://mp.weixin.qq.com/s/2GZAJAUPHTXFOKDRv-D21Q 一、下载源码 https://github.com/opencv 二、源码编译 ① 在cmake中添加源码编译路径和生成路径,第一次点击configure。 ② 添加contrib路径 第一次configure后,找到OPENCV_EXTRA_MODULES_PATH,将contrib路径添加进来,注意要具体到modules/,继续configure。 ..

zaibeijixing的专栏 1万+

-server多线程由于可见性导致死循环

-server运行正确运行应该在睡眠2秒后调用getStop()以后停止循环,但是由于虚拟机性能的优化可能只在开始的时候第一次读取stop的值为false之后就不会在读取stop的值。正确的方法应该在把private boolean stop改为 private voliate boolean stop,这样虚拟机就会每次都会去内存中读取stop的值了...

weixin_38289196的博客 354

压电陶瓷传感器避坑指南:实测阻抗匹配对信号输出的影响(附示波器调试技巧)

本文深入探讨压电陶瓷传感器在工业振动监测中的阻抗匹配问题,通过等效电路模型和实测数据揭示负载阻抗对信号输出的关键影响。文章提供从元件选型到示波器调试的完整解决方案,特别强调100kΩ以上负载阻抗的重要性,并分享JFET缓冲器设计和PCB布局的实用技巧,帮助工程师避免信号失真和输出不稳定问题。

ooo22的博客 516

从CT扫描到3D模型:手把手教你用NII文件在3D Slicer中重建脊柱(附Verse数据集实战)

本文详细介绍了如何利用NII文件在3D Slicer中从CT扫描数据重建脊柱3D模型的全流程,包括环境配置、数据获取、方向校准、结构分割和模型优化等关键步骤。通过Verse数据集实战演示,帮助医学从业者快速掌握医学图像处理技术,提升临床诊疗与教学效率。

weixin_42651281的博客 202

【生产问题排查 四】线上如何排查CPU100%的情况

当我们把服务发布到服务器器,可能会因为一些问题造成我们的服务器CPU被打满甚至超过100%,那如果我们想知道到底上在做什么操作导致CPU持续过高呢?因为在线上只能通过日志看问题,或者排查到哪个进程或者哪个线程持续占用CPU。然后才能找到具体问题在哪里才能进行解决,具体排查过程。

MaoLin Tian's Blog 1397

【汽车主动降噪】【ANC算法优化】基于深度学习的汽车主动噪声控制技术研究及Matlab实现

本文探讨了基于深度学习的汽车主动降噪(ANC)算法优化方案。针对传统FXLMS算法在应对复杂、非线性车内噪声时的局限性,文章详细解析了如何利用神经网络作为非线性建模器、深度滤波器或智能步长调节器来增强ANC系统性能,并提供了完整的Matlab仿真实战流程,展示了深度学习在提升降噪效果和收敛速度方面的潜力。

seed的博客 540

JVM:线上服务CPU爆满,如何排查|jstack指令查看堆栈日志(三)

前一段时间出现了一个正则表达式引起的线上CPU爆满的问题,一开始没有在第一时间定位到问题,这里也特此记录一下,同时也系统的梳理下CPU爆满问题的排查思路和方法,为后续的同学提供参考。

55555的博客 5419

FreeSwitch采用mrcp协议对接科大讯飞asr和tts以及对话系统

FreeSwitch采用mrcp协议对接科大讯飞asr和tts对接过程

shanghaimoon的专栏 8839

【MicroPython编程-ESP32篇:设备驱动】-BNO08X系列传感器驱动

BNO08X 系列(BNO085/BNO086)是一款系统级封装 (SiP),集成了三轴加速度计、三轴陀螺仪、磁力计以及运行 CEVA SH-2 固件的 32 位 ARM® Cortex™-M0+ 微控制器。SH-2 包含 MotionEngine™ 软件,该软件提供复杂的信号处理算法来处理传感器数据,并提供精确的实时 3D 姿态、航向、校准加速度和校准角速度,以及更高级的上下文输出。BNO08X 集成在一个 28 引脚 LGA 封装中,尺寸为 3.8mm x 5.2mm x 1.1mm。它兼容 Andro

视觉与物联智能 692

线上服务器的CPU使用率达到100%了,如何排查、定位和解决该问题?

一,假如线上服务器的CPU使用率达到100%? 该如何排查、定位和解决问题? 步骤如下: 1, 定位耗费cpu的进程 top -c,就可以显示进程列表,然后输入P,按照cpu使用率排序,你会看到类似下面的东西 2,定位耗费cpu的线程 top -Hp 13857,就是输入那个进程pid就好了,然后输入P,按照cpu使用率排序,你会看到类似下面的东西 大概类似上面那样,你就可以看到这个进程里的哪个线程耗费cpu最高 3, 定位哪段代码导致的cpu过高 printf “%x\n” 16872,把线程pid转

胡子哥 3800

TC3XX - MCAL知识点(二十七):SENT Mcal配置及代码实战(单边半字节传输协议)

SENT协议只有一根线,异步传输!Sent协议的全称为Single Edge Nibble Trans .isson,单边半字节传输协议,是一种单线异步串行通信协议。Sent报文包含8个Nibble和一个校准位如图1所示,每一个Nibble数据被编码成PWM方式。设计这种协议的目的是用在与汽车ECU快速交互信息的传感器上,以此来取代低精确度的10bit AD和PWM。Sent是一种点对点的单方向从传感器到控制端的协议,控制器不需要同步信号。

梦想技术家 2271

Java进程导致CPU使用率飙升的问题排查

Java进程导致CPU使用率飙升的问题排查 不好啦!不好啦!老大,你快看下,线上服务器报警,CPU使用率飙高至100%,所有业务接口都在转圈圈,该怎么办呐?! 正准备下班的我突然一脸懵地按在工位上开始进行问题排查(文中自己起了一个简单的java进程demo进行演示)。 首先,我们需要确认的是哪个进程导致了CPU的使用率一直居高不下,这里我们可以使用linux命令:top 查看整个系统的进程运行状态: 如上图所示,通过该命令我们可以看到各个进程的PID以及它们对应的CPU、内存的占用情况。默认情况下,所

加油吧,先生~ 573

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

CPU 100%排查及常见案例

还在为CPU 100%而头疼吗?几个简单案例带你了解常规CPU 100%排查过程,正在学习的也可以自己动手实践一次

共勉 1万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

CPU 100%问题排查总结

如果是Full GC次数过多,那么通过 jstack得到的线程信息会是类似于VM Thread之类的线程,而如果是代码中有比较耗时的计算,那么我们得到的就是一个线程的具体堆栈信息[如下]。如果程序中有大量的线程,并且这些线程没有得到适当的管理和控制,可能会导致线程竞争和频繁的上下文切换,从而导致CPU占用率高。如果程序中有大量的计算任务,尤其是在循环中进行复杂的计算操作,可能会导致CPU占用率高。如果程序中存在不合理的资源使用,例如频繁的IO操作或内存泄漏,可能会导致CPU占用率高。

程序猿进阶 1万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Java服务,CPU100%问题如何快速定位?

找到相关服务,如何定位问题代码,也非常考验技术人的功底,今天简单说下思路。假设,服务器上部署了若干Java站点服务,以及若干Java微服务,突然收到运维的CPU异常告警。如何定位是哪个服务进程导致CPU过载,哪个线程导致CPU过载,哪段代码导致CPU过载?简要步骤如下:(1)找到最耗CPU的进程;(2)找到最耗CPU的线程;(3)查看堆栈,定位线程在干嘛,定位对应代码;步骤一、找到最耗CPU的进...

shenjian58的博客 1万+

【线上问题排查】CPU100%和内存100%排查

线上CPU和内存排查思路

BookSea的博客 5028

怎么排查线上CPU100%的问题

摘要:本文提供了两种排查Java应用CPU占用过高的方案。方案一基于JDK原生工具,通过top定位进程、线程转16进制后结合jstack分析线程栈,辅以jstat监控GC情况。方案二使用Arthas工具,提供可视化分析,支持直接输出高CPU线程和生成火焰图。两种方案均遵循"定位进程→定位线程→分析代码→优化问题"的流程,前者适合无外网环境,后者对新手更友好。常见问题包括死循环、内存泄漏、锁竞争和低效算法,需针对性优化。

个人专长:数据结构和算法、大数据、数据库、主流框架 1429

线上CPU飙升100%问题排查,一篇足矣

线上CPU飙升问题排查,一篇足矣

m0_55849656的博客 2917

Spring Boot 线上项目 CPU 100% 问题排查指南

摘要:排查Spring Boot线上CPU 100%问题需系统化操作,遵循安全第一、保留现场原则。步骤包括:快速定位问题进程/线程(top、jstack命令);分析线程堆栈(重点关注RUNNABLE状态、死循环等模式);检查GC状态(jstat工具)和内存问题;排查系统负载和外部依赖;结合应用日志和代码分析。核心是通过多维度工具定位高CPU线程,分析堆栈和GC日志,最终锁定代码问题。建议线上环境提前配置GC日志参数,谨慎使用内存转储工具。

csdn_tom_168的博客 1358

java 应用cpu飙升(超过100%)故障排查

记一次生产环境java应用cpu飙升(超过100%)故障排查记录

qq_33129875的博客 1万+

JVM常见线上问题:CPU 100%、内存泄露问题排查

jps:列出正在运行的虚拟机进程jstat:监视虚拟机各种运行状态信息,可以显示虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据jinfo:实时查看和调整虚拟机各项参数jmap:生成堆转储快照,也可以查询 finalize 执行队列、Java 堆和永久代的详细信息jstack:生成虚拟机当前时刻的线程快照jhat:虚拟机堆转储快照分析工具。

日常工作记录,解决实际问题,不成体系。 1509

java进程 jvm cpu100%问题排查

排查java进程cpu100%的大致过程 之前也排查过cpu 100%的问题,排查java cpu100%的问题,大致步骤是固定的,首先找到占用cpu的进程,如果是java进程,则继续查看是哪个线程占用cpu,然后到处线程栈,找到对应的线程,这时候就定位到具体哪行代码了,基本上问题就解决了。 故事背景 今天监控系统报警后台管理系统又出现cpu 100%,这个问题间歇性出现,后台管理系统使用ssm+...

wangjun5159的专栏 2万+
上一篇: java基础-类的加载
下一篇: 基于centos7.0系统-简单搭建zookeeper集群3.4.12
_爱三毛的程序员
博客等级 码龄9年 0粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值