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

这篇具有很好参考价值的文章主要介绍了Linux系统CPU占用率较高问题排查思路。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

作为工程师,在日常工作中我们会遇到 Linux服务器上出现CPU负载达到100%居高不下的情况,如果CPU 持续跑高,则会影响业务系统的正常运行,带来企业损失。

对于CPU过载问题通常使用以下两种方式即可快速定位:

方法一

第一步:使用

  1. top命令,然后按shift+p按照CPU排序

找到占用CPU过高的进程的pid

第二步:使用

  1. top -H -p [进程id]

找到进程中消耗资源***的线程的id

第三步:使用

  1. echo 'obase=16;[线程id]' | bc或者printf "%x\n" [线程id]

将线程id转换为16进制(字母要小写)

  1. bc是linux的计算器命令

第四步:执行

  1. jstack [进程id] |grep -A 10 [线程id的16进制]”

查看线程状态信息

方法二

第一步:使用

  1. top命令,然后按shift+p按照CPU排序

找到占用CPU过高的进程

第二步:使用

  1. ps -mp pid -o THREAD,tid,time | sort -rn

获取线程信息,并找到占用CPU高的线程

第三步:使用

  1. echo 'obase=16;[线程id]' | bc或者printf "%x\n" [线程id]

将需要的线程ID转换为16进制格式

第四步:使用

  1. jstack pid |grep tid -A 30 [线程id的16进制]

打印线程的堆栈信息

案例分析

1. 场景描述

生产环境下JAVA进程高CPU占用故障排查

2. 解决过程

(1) 根据top命令,发现PID为2633的Java进程占用CPU高达300%,出现故障。

(2) 找到该进程后,如何定位具体线程或代码呢,首先显示线程列表,并按照CPU占用高的线程排序:

  1. [root@localhost ~]# ps -mp 2633 -o THREAD,tid,time | sort -rn

显示结果如下:

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

找到了耗时***的线程(TID)3626,占用CPU时间有12分钟了!

(3) 将需要的线程TID转换为16进制格式

  1. [root@localhost ~]# printf "%x\n" 3626

  1. e18

(4) ***使用jstack命令打印出该进程下面的此线程的堆栈信息:

  1. [root@localhost ~]# jstack 2633 |grep "e18" -A 30

相比故障的解决而言,发现故障也同等的重要!市场上的大多数监控软件都能实现服务器负载的实时观测,比如:Zabbix、Nagios、阿里云监控(针对云服务器)等。但是当中大部分的软件都需要运维同学主动去设置规则或者检测才能发现问题,如何被动的也能收到告警呢?

他强由他强,清风拂山冈。他横任他横,明月照大江。文章来源地址https://www.toymoban.com/news/detail-468883.html

到了这里,关于Linux系统CPU占用率较高问题排查思路的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • oracle服务器的CPU占用率一直100%排查方式

    公司开发、测试、演示环境,三个环境的oracle服务器无论服务器是否空闲, CPU的占用率一直是100%, 一直也没有找到问题原因,今天就花了一整天时间研究这个问题。 awr报告是oracle 10g下提供的一种性能收集和分析工具,它能提供一个时间段内整个系统资源使用情况的报告,

    2024年02月14日
    浏览(30)
  • Java 开发,当cpu占用率100%,window和Linux分别如何定位问题

    导言 Java服务,有时候会遇到CPU 100%的问题,对于这样的问题,我们如何快速定位并解决呢?一般会有如下三个步骤: 找到最耗CPU的进程 找到这个进程中最耗CPU的线程 使用jdk自带工具jstack 查看堆栈信息,定位线程的什么操作消耗了大量CPU,定位对应代码 Java程序CPU占用过高

    2024年02月04日
    浏览(31)
  • Linux丢包问题排查思路

    判断问题与网络丢包有关 通过抓tcpdump,通过wireshark提示查看数据包状态。比如客户端重传多次失败,服务端提示丢包等错误,均是可能由于丢包导致的异常。 丢包可能存在的位置 网络丢包在交互过程中的每一个环节都有可能出现。主要环节如下: 两端服务器:主要表现在

    2024年02月15日
    浏览(32)
  • linux主机宕机排查问题方法 1 排查思路

    1.1 查看宕机的时间记录和历史登陆还有重启时间 1)查看历史重启 2)查看历史异常登录用户 1.2 首先查看系统日志 linux下的/var/log/下的log日志,包括message,内核报错日志demsg等等,sa记录,是记录cpu,内存等运行的性能文件,记录着运行时的cpu的运行状态等。 1)利用sa文件

    2024年02月16日
    浏览(28)
  • 优化QT的CPU占用率的一个思路,全网没看到这么详细的(有代码)

    引言:在最近的项目中,发现执行QT程序时,CPU占用率奇高,最高高达98%。 1、查看CPU占用率 - 指令 Linux终端输入: top 即可查看当前CPU占用率 2、优化CPU站占用率 遂专门来找谷哥和度娘讨讨经验。 总结目前网上的各种说法,原因有如下几点: 1、在paintEvent函数和update函数使用

    2024年02月17日
    浏览(33)
  • 【JVM】CPU飙高排查方案与思路

    1.使用 top命令 查看占用 cpu的情况 2.通过top命令查看后,可以查看是哪一个进程占用cpu较高,上图所示的进程为:40940 3.查看进程中的线程信息 4.可以根据进程 id 找到有问题的线程,进一步定位到问题代码的源码行号 因为根据进程ID 找到的线程id显示的是16进制,所以需要将查

    2024年02月13日
    浏览(27)
  • Linux开机rc.local不自启动执行脚本问题的排查思路及问题解决

    问题 Linux系统中,在rc.local里面配置的启动命令等不能能够在开机的时候进行自启动 问题解决 解决问题排查中最大的麻烦,需要进行reboot重启 查看rc-local的运行状态 systemctl status rc-local 如果是loaded或者是faild类似,说明启动确实出现了问题 首先查看检查是否还有rc.local的软连

    2024年02月16日
    浏览(30)
  • centos 7下安装Docker(附根据操作系统日志排查问题思路)

    Docker简介 Docker是一个开源的容器引擎,它有助于更快地交付应用。 Docker可将应用程序和基础设施层隔离,并且能将基础设施当作程序一样进行管理。使用 Docker可更快地打包、测试以及部署应用程序,并可以缩短从编写到部署运行代码的周期。 1、Docker 要求 CentOS 系统的内核

    2023年04月19日
    浏览(30)
  • Docker容器cpu利用率问题

    1.top原理 top 是读的/proc/stat文件 比如cat /proc/PID/stat 进程的总Cpu时间processCpuTime = utime + stime + cutime + cstime,该值包括其所有线程的cpu时间 某一进程Cpu使用率的计算 计算方法:       1  采样两个足够短的时间间隔的cpu快照与进程快照,             a每一个cpu快照均为(user、

    2023年04月26日
    浏览(35)
  • Redis内存使用率高,内存不足问题排查和解决

    表面现象是系统登录突然失效,排查原因发现,使用redis查询用户信息异常,从而定位到redis问题 我的redis使用的是华为云的redis分布式缓存服务,所以在问题排查方面,我们可以结合华为云提供的丰富的分析诊断工具来辅助排查解决问题。 1、问题定位到redis上,登陆redis服务

    2024年02月03日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包