Linux CPU 100% 故障排查总结

Linux服务器故障排查实战:从CPU 100%到OOM的通用解决思路 在分布式系统与云计算环境中,服务器性能监控与故障诊断是保障服务稳定性的核心技术。其原理在于通过系统级指标(如CPU使用率、内存占用、磁盘IO、网络流量)的实时采集与分析,快速定位资源瓶颈与异常进程。这项技术的核心价值在于能极大缩短平均恢复时间(MTTR),提升系统可用性与运维效率。典型应用场景包括应对线上服务突发的CPU飙高、内存泄漏(OOM)、磁盘空间耗尽或网络连接异常等问题。本文以Linux环境下的实战案例为切入点,系统化地阐述了从现象收集、根因定位到解决方案制定的标准化排查流程,并提供了针对高CPU、 阅读详情

线上分析CPU 100% 排查脚本

#!/bin/bash

# @Function
# Find out the highest cpu consumed threads of java, and print the stack of these threads.
#
# @Usage
# $ ./show-busy-java-threads.sh
#
# @author Jerry Lee

readonly PROG=`basename $0`
readonly -a COMMAND_LINE=("$0""$@")

usage() {
    cat <<EOF
Usage: ${PROG} [OPTION]...
Find out the highest cpu consumed threads of java, and print the stack of these threads.
Example: ${PROG} -c 10

Options:
    -p, --pid find out the highest cpu consumed threads from the specifed java process,
                    default from all java process.
    -c, --count set the thread count to show, default is 5
    -h, --help      display this help and exit
EOF
exit$1
}

readonly ARGS=`getopt -n "$PROG" -a -o c:p:h -l count:,pid:,help -- "$@"`
[ $? -ne 0 ] && usage 1
evalset -- "${ARGS}"

whiletrue; do
case"$1"in
    -c|--count)
        count="$2"
shift 2
        ;;
    -p|--pid)
        pid="$2"
shift 2
        ;;
    -h|--help)
        usage
        ;;
    --)
shift
break
        ;;
esac
done
count=${count:-5}

redEcho() {
    [ -c /dev/stdout ] && {
# if stdout is console, turn on color output.
echo -ne "\033[1;31m"
echo -n "$@"
echo -e "\033[0m"
    } || echo"$@"
}

yellowEcho() {
    [ -c /dev/stdout ] && {
# if stdout is console, turn on color output.
echo -ne "\033[1;33m"
echo -n "$@"
echo -e "\033[0m"
    } || echo"$@"
}

blueEcho() {
    [ -c /dev/stdout ] && {
# if stdout is console, turn on color output.
echo -ne "\033[1;36m"
echo -n "$@"
echo -e "\033[0m"
    } || echo"$@"
}

# Check the existence of jstack command!
if ! which jstack &> /dev/null; then
    [ -z "$JAVA_HOME" ] && {
        redEcho "Error: jstack not found on PATH!"
exit 1
    }
    ! [ -f "$JAVA_HOME/bin/jstack" ] && {
        redEcho "Error: jstack not found on PATH and $JAVA_HOME/bin/jstack file does NOT exists!"
exit 1
    }
    ! [ -x "$JAVA_HOME/bin/jstack" ] && {
        redEcho "Error: jstack not found on PATH and $JAVA_HOME/bin/jstack is NOT executalbe!"
exit 1
    }
export PATH="$JAVA_HOME/bin:$PATH"
fi

readonly uuid=`date +%s`_${RANDOM}_$$

cleanupWhenExit() {
    rm /tmp/${uuid}_* &> /dev/null
}
trap"cleanupWhenExit" EXIT

printStackOfThreads() {
local line
local count=1
while IFS=" "read -a line ; do
local pid=${line[0]}
local threadId=${line[1]}
local threadId0x="0x`printf %x ${threadId}`"
local user=${line[2]}
local pcpu=${line[4]}

local jstackFile=/tmp/${uuid}_${pid}

        [ ! -f "${jstackFile}" ] && {
            {
if [ "${user}" == "${USER}" ]; then
                    jstack ${pid} > ${jstackFile}
else
if [ $UID == 0 ]; then
                        sudo -u ${user} jstack ${pid} > ${jstackFile}
else
                        redEcho "[$((count++))] Fail to jstack Busy(${pcpu}%) thread(${threadId}/${threadId0x}) stack of java process(${pid}) under user(${user})."
                        redEcho "User of java process($user) is not current user($USER), need sudo to run again:"
                        yellowEcho " sudo ${COMMAND_LINE[@]}"
echo
continue
fi
fi
            } || {
                redEcho "[$((count++))] Fail to jstack Busy(${pcpu}%) thread(${threadId}/${threadId0x}) stack of java process(${pid}) under user(${user})."
echo
                rm ${jstackFile}
continue
            }
        }
        blueEcho "[$((count++))] Busy(${pcpu}%) thread(${threadId}/${threadId0x}) stack of java process(${pid}) under user(${user}):"
        sed "/nid=${threadId0x} /,/^$/p" -n ${jstackFile}
done
}


ps -Leo pid,lwp,user,comm,pcpu --no-headers | {
    [ -z "${pid}" ] &&
    awk '$4=="java"{print $0}' ||
    awk -v "pid=${pid}"'$1==pid,$4=="java"{print $0}'
} | sort -k5 -r -n | head --lines "${count}" | printStackOfThrea

linux实用脚本show-busy-java-threads linux实用脚本show-busy-java-threads、show-duplicate-java-classes、find-in-jars 立即下载

相关推荐

show-busy-java-threads.sh文件

show-busy-java-threads脚本初体验,快速排查Java的CPU性能问题

show-busy-java-threads

背景 经常做后端服务开发的同学,或多或少都遇到过 CPU 负载特别高的问题。 尤其是在周末或大半夜,突然群里有人反馈线上机器负载特别高,不熟悉定位流程和思路的同学可能登上服务器一通手忙脚乱,定位过程百转千回。 对此,也有不少同学曾经整理过相关流程或方法论,类似把大象放进冰箱要几步 传统的方案一般是4步: 1.topoderbywithP:1040//首先按进程负载排序找到axLoad(pid) 2.top -Hp 进程PID:1073//找到相关负载线程...

很多时候犯错都是在不知情的情况下发生的 2948

show-busy-java-threads.sh

java线程定位脚本

排查占用资源java代码脚本

show-busy-java-threads.sh(摘自:https://github.com/oldratlee/useful-scripts/blob/master/show-busy-java-threads.sh)     #!/bin/bash   # @Function   # Find out the highest cpu consumed thread...

vay156630557的博客 375

光电式烟雾传感器实战指南(一) 光迷宫设计与散射原理篇

本文深入解析了光电式烟雾传感器的核心部件——光迷宫的设计原理与光散射机制。文章详细阐述了如何通过精心设计的光学结构实现‘透气不透光’,并重点探讨了前向散射(尤其是135°角)在提升烟雾监测系统灵敏度与可靠性中的关键作用,为DIY爱好者提供了从理论到实践的完整指南。

weixin_29229055的博客 587

保姆级教程:在Rockchip RK3588 SDK中,如何为你的新硬件板子创建第一个DTS文件

本文提供在Rockchip RK3588 SDK中为自定义硬件创建首个DTS文件的详细教程。通过分析DTS在RK3588开发中的角色、快速定位参考设计、实操步骤及调试验证方法,帮助开发者高效完成硬件板级配置,特别适合嵌入式Linux系统开发者参考。

weixin_28678831的博客 288

线上 Linux CPU 100% 故障排查总结

排查后发现,在逻辑层使用时,并没有使用该方法返回的set集合中的内容,而是简单的用set的size数值。昨天下午突然收到运维邮件报警,显示数据平台服务器cpu利用率达到了98.94%,而且最近一段时间一直持续在70%以上,看起来像是硬件资源到瓶颈需要扩容了,但仔细思考就会发现咱们的业务系统并不是一个高并发或者CPU密集型的应用,这个利用率有点太夸张,硬件瓶颈应该不会这么快就到了,一定是哪里的业务代码逻辑有问题。细节是魔鬼,技术的同学需要有刨根问题的求知欲和追求卓越的精神,只有这样,才能不断的成长和提升。

m0_69632475的博客 1124

stm32驱动NRF24L01_原理+代码解析

NRF24L01是NORDIC公司生产的一款无线通信通信芯片,采用FSK 调制,集成NORDIC自家的Enhanced Short Burst协议。可以实现点对点或是1对6的无线通信。无线通信速度最高可达到2Mbps。①2.4G全球开放的ISM频段,免许可证使用。②最高工作速率2Mbps,高校的GFSK调制,抗干扰能力强。③126个可选的频道,满足多点通信和调频通信的需要。④内置CRC检错和点对多点的通信地址控制。⑤可设置自动应答,确保数据可靠传输。//NRF24L01寄存器操作命令。

zyc18700766982的博客 2万+

Linux线上故障排查全套实战,CPU100%、内存泄漏、磁盘IO打满、连接泄漏、死锁、高并发故障精准定位与复盘

摘要:本文系统讲解Linux高并发服务的线上故障排查全流程,涵盖CPU满载、内存泄漏、磁盘IO卡死、网络异常等核心场景。通过标准化SOP(现象→监控→根因→修复),手把手指导使用top/pstack/strace等工具定位死循环、句柄泄漏、线程死锁等疑难问题,并给出内核调优、架构防护等企业级解决方案。内容强调从"会编码"到"会排障"的能力跃迁,包含故障快照留存、资源维度分析、根因修复等实战方法论,帮助开发者掌握生产环境问题定位与性能优化核心技能,完成从初级到资深工程师

2401_86195313的博客 208

机器学习——径向基函数(RBF)神经网络

目录 一、什么是基函数 二、什么是径向基函数 三、为什么RBF神经网络使用一个径向基函数作为隐含层的激活函数 四、参数训练 五、RBF网络vs BP网络和 SVM 一、什么是基函数 著名的傅里叶变换是指:n个有参(权值)的正、余弦三角函数基的和式可以等价的表示任意一个周期函数,这里的“基”和我们数学中说的坐标基或向量基含义相同,即坐标空间中任意一个向量都可以用基向量的线性和表示出来。 因此,我们引入函数空间的概念,函数空间中的每个连续函数可以表示为基函数的线性组合,就像向量空间中的每..

CHWB2580的博客 6272

最小可分辨对比度(MRC)

最小可分辨对比度的测试方法如下: 1)选择对比度测试靶板,一般有100%,50%,33.77%,15%,5%。 2)调整照度,确保能够清晰观测到图像中的靶标; 3)利用USAF1951分辨率靶观察找到能够分辨出的靶标。 1951 USAF分辨力测试图目前仍广泛地应用于测试光学成像系统(如显微镜和相机)的分辨能力。这种图案包括几组由三条短线构成组合,短线的尺寸从大到小。成像系统无法辩明的...

6272

Linux系统cpu 100%修复案例

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34414196的博客 186

太阳敏感器:卫星姿态控制的“指南针

在卫星姿态控制系统中,太阳敏感器(Sun Sensor) 是至关重要的光学姿态敏感器之一。它通过探测太阳光的方向,为卫星提供关键的姿态参考信息,确保卫星能够正确调整自身方位,维持稳定的对日定向,保障能源供应和任务执行。

ScilogyHunter的博客 1731

CPU 100% 排查实战复盘:4步从确认到根治(附命令)

线上 CPU 100%、服务卡死,重启三次还是烧。很多人本能反应又是硬件不够了、加机器,结果过会儿又满。本文用 4 步法,从确认 CPU 打满到根治,每一步都讲清"为什么这么查",附可直接抄的命令。防汛防台巡检期,机房偏偏怕这种单核被打满的慢病。

ITyunwei0987的博客 3218

基于Simulink的电动汽车动力总成控制策略验证与标定仿真平台

电动汽车的动力总成(Powertrain)是车辆的核心系统,包括动力电池、电机控制器、逆变器和驱动电机等关键部件。动力总成的控制策略直接影响车辆的动力性能、能耗效率和驾驶体验。为了验证和优化这些控制策略,基于MATLAB/Simulink的仿真平台成为一种高效且经济的解决方案。本项目旨在构建一个完整的基于Simulink的电动汽车动力总成控制策略验证与标定仿真平台,涵盖控制策略建模、性能评估以及参数标定等功能模块,并通过仿真验证系统的有效性。

xiaoheshang_123的博客 177

【全志V821_FoxPi】6-2 IMX219 MIPI摄像头适配

全志V821芯片适配IMX219 MIPI摄像头(2lane)教程,基于FoxPi开发板V1.2 SDK。文章详细介绍了IMX219的技术参数(800万像素、1/4英寸CMOS、支持1080P@30fps输出)及模组接口原理图。重点展示了设备树配置方法,包括PIO引脚定义(TWI0使用PA3/PA4,复位引脚PA2)、TWI0节点设置(100kHz时钟)以及VIND0节点中sensor0的完整配置(I2C地址0x20、MCLK0、RAW格式输出等)。配置过程强调需注意IMX219的器件地址转换(0x10→0

第四维度的博客 2254

linux中怎么优化cpu,Linux性能优化--CPU到100%了该怎么办(上)

如果CPU导了100%,第一步肯定用top命令来查看top - 15:12:21 up 245 days, 20:55, 2 users, load average: 0.98, 0.74, 0.38Tasks: 131 total, 2 running, 129 sleeping, 0 stopped, 0 zombie%Cpu(s): 25.1 us, 0.2 sy, 0....

weixin_28958535的博客 347

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Linux系统cpu飙升到100%排查方案

Linux服务器CPU突然飙升到100%,这时候系统直接卡死,很多新手面对这种情况经常束手无策,本文就针对这个问题提出个人方案,希望能帮助到你们。

小相探索IT世界 1517

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

linux cpu占用100原因查询,如何根据查询异常时间节点和连接进而确定CPU使用率100%的原因...

本文在介绍如何根据查询异常时间节点和连接进而确定CPU使用率100%的原因的基础上,重点探讨了其具体步骤,本文内容紧凑,希望大家可以有所收获。排查 Linux 实例异常 CPU 使用率 100%使用 ECS 实例的过程中,您可能碰到 CPU 使用率异常,CPU使用率高达 100% 的情况。而且无法通过 top、htop 等命令查询到消耗 CPU 资源的具体进程。本文介绍了三个重点关注的 CPU 使...

weixin_30407563的博客 418

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

linux 使cpu使用率升高_Linux系统CPU占用率较高问题排查思路

作为 Linux 运维工程师,在日常工作中我们会遇到 Linux服务器上出现CPU负载达到100%居高不下的情况,如果CPU 持续跑高,则会影响业务系统的正常运行,带来企业损失。很多运维的同学遇到这种状况往往会不知所措,对于CPU过载问题通常使用以下两种方式即可快速定位:方法一***步:使用top命令,然后按shift+p按照CPU排序找到占用CPU过高的进程的pid第二步:使用top-H-p...

weixin_39788386的博客 167

Linux系统CPU占用率较高问题排查思路

Linux系统CPU占用率较高问题排查思路

zlfjavahome的专栏 4941

linux下nodejs的二进制下载安装、故障排查、easy-monitor3.0

wget https://npm.taobao.org/mirrors/node/v14.16.0/node-v14.16.0-linux-x64.tar.xz tar xvf node-v14.16.0-linux-x64.tar.xz mkdir /data mv node-v14.16.0-linux-x64 /data/nodejs ln -s /data/nodejs/bin/* /usr/bin/ npm install yarn

u010533742的博客 911
上一篇: Spring Boot发布事件订阅
wheree
博客等级 码龄9年 22粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值