Linux系统中CPU占用率较高问题排查思路与解决方法

镜像下载、域名解析、时间同步请点击阿里云开源镜像站

这篇文章主要给大家介绍了关于Linux系统中CPU占用率较高问题排查思路与解决方法,文中通过示例代码介绍的非常详细,对大家学习或者使用Linux具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

前言

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

Linux系统中CPU占用率较高问题排查思路与解决方法

很多运维的同学遇到这种状况往往会不知所措,对于CPU过载问题通常使用以下两种方式即可快速定位:

方法一

第一步:使用

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

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

第二步:使用

top -H -p [进程id]

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

第三步:使用

echo ‘obase=16;[线程id]’ | bc或者printf “%x\n” [线程id]

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

bc是linux的计算器命令

第四步:执行

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

查看线程状态信息

方法二

第一步:使用

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

找到占用CPU过高的进程

第二步:使用

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

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

第三步:使用

echo ‘obase=16;[线程id]’ | bc或者printf “%x\n” [线程id]

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

第四步:使用

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

打印线程的堆栈信息

案例分析

结合上面来做。

场景描述

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

解决过程

1、根据top命令,shift+p,发现PID为41673的Java进程占用CPU高达250%,出现故障。

Linux系统中CPU占用率较高问题排查思路与解决方法

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

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

Linux系统中CPU占用率较高问题排查思路与解决方法

显示结果如下:

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

[root@localhost ~]# printf "%x\n" 41846
a376

4、最后使用jstack命令打印出该进程下面的此线程的堆栈信息:

[root@localhost ~]# jstack 41673 |grep "a376" -A 30

解决办法

1、根据top命令,shift+p,发现PID为41673的Java进程占用CPU高达250%,出现故障。

Linux系统中CPU占用率较高问题排查思路与解决方法

2、根据pid查看他的进程看看是什么服务占用这么高

ps -ef |grep -v grep | grep 41673

Linux系统中CPU占用率较高问题排查思路与解决方法

3、查看到是一个java进程占用这么高,然后看看有没有用,没有用的话就杀掉它

kill -9 41673

4、再次top查看cpu整体就降下来了。

原文链接:https://blog.csdn.net/liu_chen_yang/article/details/124320046

Original: https://www.cnblogs.com/helong-123/p/16450732.html
Author: 萌褚
Title: Linux系统中CPU占用率较高问题排查思路与解决方法

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/523183/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 大数据集群配置(电)

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    大数据 2023年2月21日
    027
  • 瑞吉外卖项目 基于spring Boot+mybatis-plus开发 超详细笔记,有源码链接

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    大数据 2023年2月25日
    050
  • 「Apache Groovy」- 连接 SQLite 数据库 @20210206

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    大数据 2023年2月23日
    032
  • 02_pyspark_rdd常见算子

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    大数据 2023年2月20日
    027
  • 大数据之hive(数据仓库工具)的分组和分区操作

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    大数据 2023年2月11日
    039
  • 数据分析:SQL和Python

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    大数据 2023年2月25日
    030
  • scala中迭代器

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    大数据 2023年2月16日
    044
  • 【NLP_事件抽取】基于条件随机场模型

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    大数据 2022年9月16日
    0128
  • CentOS7安装Spark3.3.0 ON YARN集群并整合HIVE, Spark-On-HIVE

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    大数据 2023年2月7日
    056
  • mysql安装与设置密码安全策略(为hive做准备)

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    大数据 2023年2月8日
    040
  • 怎样在触发器trigger中执行DDL和commit

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    大数据 2023年2月23日
    038
  • Hive 导出数据到 CSV 文件

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    大数据 2023年2月8日
    0100
  • SQLite第 1 章:介绍

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    大数据 2023年2月22日
    027
  • MySQL高级SQL语句

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    大数据 2023年2月17日
    033
  • Nacos 初始

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    大数据 2023年4月29日
    013
  • ZooKeeper 避坑实践:如何调优 jute.maxbuffer

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    大数据 2023年3月4日
    020
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球