CPU 使用率 100% 怎么办

独家号 码上实战 作者 flyhero原文链接

工作中遇到CPU使用率100%,不要慌,一起来找出原因并fix掉它。

记住这里大致流程,当线上突然遇到时,也不必手足无措。

总体流程

找出CPU比较高的进程PID

top

打印该进程下线程的CPU占用比较高的tid

top -Hp {PID}

将该tid进行16进制转换id

printf "%x\n" {tid}

打印线程的堆栈信息

jstack {PID} |grep {id} -A 100

当然这四步的执行需要时间,但我们可以将这几步写成shell脚本来执行。

安装JDK命令行工具

服务器上安装的OpenJDK ,是否有常用的命令行工具?

验证是否安装

[root@op-system ~]$ jstack -h
Usage:
jstack [-l] <pid>
(to connect to running process)
jstack -F [-m] [-l] <pid>
(to connect to a hung process)
jstack [-m] [-l] <executable> <core>
(to connect to a core file)
jstack [-m] [-l] [server_id@]<remote server IP or hostname>
(to connect to a remote debug server)

如果输出如上内容表明,已经拥有工具,倘若没有,那么继续下面。

安装

  • 查看JDK版本
[root@op-system ~]$ java -version
openjdk version "1.8.0_201"
OpenJDK Runtime Environment (build 1.8.0_201-b09)
OpenJDK 64-Bit Server VM (build 25.201-b09, mixed mode)
  • 看openJDK有jstack的yum源
[root@op-system ~]$ yum whatprovides '*/jstack'
1:java-1.8.0-openjdk-devel-debug-1.8.0.201.b09-2.el7_6.x86_64 : OpenJDK Development Environment 8 with full debug on
Repo : @updates
Matched from:
Filename : /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.201.b09-2.el7_6.x86_64-debug/bin/jstack

找到和JDK版本对应的yum源。

  • 安装
[root@op-system ~]$ sudo yum install java-1.8.0-openjdk-devel-debug-1.8.0.201.b09-2.el7_6.x86_64

寻找问题所在

  • 查出使用率最高的进程

[root@op-system ~]$ top

发现 123067 这个进程特别消耗CPU。

  • 查看进程中线程情况
[root@op-system ~]$ top -p 123067 -H

发现 127510 这个线程特别消耗CPU,那么我们来看看这个线程到底是做什么的。

  • 十进制id转十六进制

[root@op-system ~]$ printf "%x\n" 127510
1eaec
  • 使用jstack打印出线程的堆栈信息
[root@op-system ~]$ jstack 123067 |grep 1eaec -A 100

从打印出来的信息中发现了很熟悉的代码,对,就是这里。

解决问题

那么既然找到了问题,我们就只能通过,数据库索引、SQL优化、算法优化、快速返回等方法来最这段代码优化了。

 

CPU 使用率 100% 怎么办的更多相关文章

  1. linux内核3.6版本及以下的bug引发的故障--cpu使用率100%

    现象:         旗舰店运价库cpu使用率100%,load升高,导致后续的请求失败.         重启服务器,cpu.load恢复正常. 触发条件:        (1)linux内核3. ...

  2. 【SQL Server】SQL Server占用CPU使用率100%的解决方法

    原文:[SQL Server]SQL Server占用CPU使用率100%的解决方法 近日,帮一个客户解决了服务器CPU占用率高达100%的问题. 以前做的一个某污水处理厂自控系统项目,客户反映其自控 ...

  3. 记java应用linux服务单个CPU使用率100%分析

    之前在做项目的过程中,项目完成后在linux服务器上做性能测试,当服务跑起来的时候发现cpu使用率很奇怪,java应用把单个cpu跑满了,其他cpu利用率0%. 刚开始遇到这问题的时候我第一时间反应使 ...

  4. 为什么logstash进程的CPU使用率100%?

    机器上有个进程cpu使用率很高,近100%了, Tasks: 120 total, 2 running, 118 sleeping, 0 stopped, 0 zombie%Cpu(s): 99.0 ...

  5. 某个应用使cpu使用率100%

    --CPU使用率 Linux是一个多任务的操作系统,将每个cpu的时间划分为很短的时间片,再通过调度器轮流分配给各个任务使用,因此造成多任务同时运行的错觉 为了维护cpu时间,linux通过事先定义的 ...

  6. SQLSERVER进程CPU使用率100%

    解决SQLSERVER2008 CPU使用率99%: 1.dbcc checkdb 重建索引 2.檢查有沒有死鎖 -- sp_lock SELECT request_session_id spid , ...

  7. 提高CPU使用率100%

    直接上脚本: #!/bin/bash while true do echo 2^2^20 | bc & >/dev/null done 查看CPU使用率用top命令即可 释放CPU: p ...

  8. Linux:CPU使用率100%排查方法

    Linux作为一个多任务操作系统,将每个CPU的时间划分为很短的时间片,再通过调度器轮流分配给各个任务使用,因此造成多任务同时运行的错觉. CPU使用率 Linux作为一个多任务操作系统,将每个CPU ...

  9. java cpu 使用率100%

    --宝典开始 top :查看 进程 ,选CPU使用率高的 获取进程ID,pid top -Hp pid:查看线程,选CPU使用率高的 获取线程ID,threadid printf "%X\n ...

随机推荐

  1. SpringBoot整合Swagger2及使用

    简介 swagger是一个流行的API开发框架,这个框架以"开放API声明"(OpenAPI Specification,OAS)为基础, 对整个API的开发周期都提供了相应的解决 ...

  2. 详细了解 InnoDB 内存结构及其原理

    最近发现,文章太长的话,包含的信息量较大, 并且需要更多的时间去阅读.而大家看文章,应该都是利用的一些碎片时间.所以我得出一个结论,文章太长不太利于大家的吸收和消化.所以我之后会减少文章的长度,2-3 ...

  3. 面试关于Spring循环依赖问题,我建议你这么答!

    写在前面 在关于Spring的面试中,我们经常会被问到一个问题:Spring是如何解决循环依赖的问题的. 这个问题算是关于Spring的一个高频面试题,因为如果不刻意研读,相信即使读过源码,面试者也不 ...

  4. Dynamics CRM各个版本的元数据浏览解决方案

    https://docs.microsoft.com/en-us/dynamics365/customerengagement/on-premises/developer/browse-your-me ...

  5. 【Java】7.0 进制转换

    [二进制转十进制] public static void main(String args[]) { Scanner sc = new Scanner(System.in); System.out.p ...

  6. 现代 CLI 和 GUI 方案指南

    原文链接:http://axuebin.com/articles/fe-solution/cli/desc.html,转载请联系 写在前面 提到初始化项目,那就必须提到脚手架这个名词,那为什么这篇文章 ...

  7. JMeter线程组编辑区揭秘

    线程组编辑区如下: 有点复杂,但是慢慢看下来,还是比较容易理解. Name 带有业务含义的名字. Comments 线程组的备注说明. Action to be taken after a Sampl ...

  8. Java设计模式(一):设计模式概述、UML图、设计原则

    1 设计模式概述 1.1 软件设计模式的产生背景 "设计模式"最初并不是出现在软件设计中,而是被用于建筑领域的设计中. 1977年美国著名建筑大师.加利福尼亚大学伯克利分校环境结构 ...

  9. python3存储numpy格式的矩阵

    技术背景 numpy在python中的地位是相当高的,即使是入门的python使用者也会经常看到这个库的使用.除了替代python自带的列表数据格式list之外,numpy的一大优势是其底层的高性能实 ...

  10. 反病毒攻防研究第004篇:利用WinRAR与AutoRun.inf实现自启动

    一.前言 由之前的一系列研究可以发现,为了使得"病毒"能够实现自启动,我也是煞费苦心,采取了各种方式,往往需要编写冗长的代码并且还需要掌握系统底层或注册表的很多知识才可以.而这次我 ...