CPU 使用率 100% 怎么办

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 ,是否有常用的命令行工具?

验证是否安装

[[email protected]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] [[email protected]]<remote server IP or hostname>
        (to connect to a remote debug server)

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

安装

  • 查看JDK版本
[[email protected]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源
[[email protected] ~]$ 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源。

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

寻找问题所在

  • 查出使用率最高的进程
[[email protected]system ~]$ top

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

  • 查看进程中线程情况
[[email protected]system ~]$ top -p 123067 -H

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

  • 十进制id转十六进制
[[email protected]system ~]$ printf "%x\n" 127510
1eaec
  • 使用jstack打印出线程的堆栈信息
[[email protected]system ~]$ jstack 123067 |grep 1eaec -A 100

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

解决问题

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

CPU

原文地址:https://www.cnblogs.com/xuanbjut/p/11731129.html

时间: 2024-10-10 00:26:50

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

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

现象:         旗舰店运价库cpu使用率100%,load升高,导致后续的请求失败.         重启服务器,cpu.load恢复正常. 触发条件:        (1)linux内核3.6版本及以下. (线上机器大部分是2.6.32)       (2)mysql-connector-java5.1.31版本及以下.(各业务线需要自己check)       (3)mysql-client没有设置socketTimeout. (各业务线需要自己check)       (4)杀死m

百度云BCC的CPU使用率100%

这个就是传说中的用别人电脑挖矿吗?还会改自动改你的密码. 先手动删除了计划任务里的文件夹,清空了crontab,CPU使用率降下来了. 正文 国庆第4天,突然发现百度云BCC的CPU使用率达到100%. 重要的是,root密码还tnnd被改动了.原来的VNC连接还在,但是新登陆的终端都连不上了,提示密码错误. 重启,通过主页使用手机修改密码之后,还显示CPU使用率达到100%. Top了一下,发现cron一直100%. crontab -l了一下 先来看看计划任务都干啥了: 第一条 每3天运行脚

SQLSERVER进程CPU使用率100%

解决SQLSERVER2008 CPU使用率99%: 1.dbcc checkdb 重建索引 2.檢查有沒有死鎖 -- sp_lock SELECT request_session_id spid , OBJECT_NAME(resource_associated_entity_id) tableName     FROM sys.dm_tran_locks     WHERE resource_type = 'OBJECT' -- kill spid 解除死锁 kill 58 到这里查看一下C

阿里云centos服务器cpu使用率100%和redis漏洞问题

2016-10-27 开发服务器病毒的一次解决 一:发现问题 早上9点左右,短信告警cpu使用达到100%,ssh连接不上,重启服务器,并没有解决cpu满载的情况,但可以用ssh连上了. 二:解决办法 遇到这种突然的cpu飙升,且用top命令看不到(shift+P)占用cpu特别大的进程,初步怀疑服务器中病毒了并且有可能执行着计划任务 查看计划任务 果然,计划任务显示,它在每分钟执行一个远程名为pm.sh脚本,经查,该ip地址为韩国 获取该脚本,内容如下: ===================

top命令显示CPU使用率过了100%原因

1.使用top命令查看发现cpu使用率超过了100%,如下图: 4868 root      20   0  161m  768  568 S 100.1  0.0   6867:56 pidguard 2.我的机器是8cpu的,经过检查发现top命令显示的是占用的cpu总数. 即8cpu时top下cpu利用率最大可以到达800%. 如果你的进程利用了多个cpu,那么top命令显示的是多个cpu占用率的总和. 所以top命令下查看到的cpu利用率是可能超过100%的.

(译)用win7自带工具找出svchost.exe的CPU使用率达到100%的元凶

本文是我对自己上一篇转载的博客 <Figuring out why my SVCHOST.EXE is at 100% CPU without complicated tools in Windows 7> 的翻译.本人翻译的原则是力求通顺自然,因此很多地方并没有严格按照原文的词句来,而是争取用更符合我们语言习惯的方式表达类似的意思. =====================================华丽的分割线=================================== S

Mysql CPU使用率长期100%的解决思路备忘

最近一台服务器的CPU使用率长期保持在100%的状态,查看进程发现是Mysql服务导致的.于是搜索各方资料,终于成功解决问题.备忘以及分享一下,希望可以帮助各位新手朋友. (服务器运行环境是Windows server2008,Linux思路类似.只是命令行工具不同.) 首先通过cmd 输入 mysql -h localhost -u root -p 回车进入mysql数据库 通过 show processlist; 指令查看当前 mysql 使用频繁的 sql 语句 反复调用此命令发现经常出现

zabbix自动发现与监控内存和CPU使用率最高的进程

监控需求 某项目的应用服务器CPU和内存使用率的监控,通过zabbix系统监控记录应用服务器上进程的CPU和内存的使用情况,并以图表的形式实时展现,以便于我们分析服务器的性能瓶颈. 监控方式 利用zabbix监控系统的自动发现功能,首先编写shell脚本获取服务器的CPU和内存资源使用率最大的进程,以json的格式输出,然后对这些进程的CPU和内存资源使用情况进行监控.(本文监控的进程为Linux服务器中资源使用率最高的10个进程.) 缺点 不适用于监控固定的进程 首先使用top命令查看进程状态

Linux 下 CPU 使用率与机器负载的关系与区别

原文链接:  http://blog.chinaunix.net/uid-28541347-id-4926054.html 当我们使用top命令查看系统的资源使用情况时会看到load average,如下图所示.它表示系统在1,5,15分钟的平均工作负载.那么什么事负载(load)呢?它和cpu的利用率又有什么关系呢? load average:系统平均负载是CPU的Load,它所包含的信息不是CPU的使用率状况,而是在一段时间内CPU正在处理以及等待CPU处理的进程数之和的统计信息,也就是CP