服务器CPU占用过高处理方案
一、使用top命令找出CPU占比最高的进程
top命令定位异常进程
如果确定是Java进程则进行下一步详细定位
eg:可以看出CPU占比最高的为Java进程22364
二、ps -ef或者jps进一步定位
使用
ps -ef | grep java
命令查看全部Java进程使用
jps -l
命令列出Java进程
三、定位到具体的异常线程
方法一:使用
top -H -p 进程号
查看异常线程方法二:使用
ps -mp 进程 -o THREAD,tid,time
列出进程中的线程占用CPU情况
-m 显示所有的线程
-p 指定进程id
-o 该参数后是用户自定义格式
eg:可以看出线程ID为22369的占用最高
四、将需要的线程ID转换为16进制格式(英文小写格式)
转换方式:printf “%x\n” 线程ID
注:一定要用英文小写字母,否则监控不到线程代码!!!
五、jstack定位问题代码
定位方式: jstack 进程ID | grep tid(16进制线程ID小写英文) -A60
eg:下述代码可看出该线程状态处于RUNNABLE,即程序正在运行态
总结:
对于Java应用而言,一下常见的几个性能问题都可以从线程堆栈入手定位:
系统挂起无响应
系统CPU较高
系统运行的响应时间长
线程死锁等
常见的线程状态:RUNNABLE,BLOCKED,WAITING,TIMED_WAITING
RUNNABLE
从虚拟机的角度看,RUNNABLE状态代表线程正处于运行状态。一般情况下处于运行状态线程是会消耗CPU的,但不是所有的RUNNABLE都会消耗CPU,比如线程进行网络IO时,这时线程状态是挂起的,但由于挂起发生在本地代码,虚拟机并不感知,所以不会像显示调用Java的sleep()或者wait()等方法进入WAITING状态,只有等数据到来时才消耗一点CPU.
TIMED_WAITING/WATING
这两种状态表示线程被挂起,等待被唤醒,当设置超时时间时状态为TIMED_WAITING,如果是未设置超时时间,这时的状态为WATING,必须等待lock.notify()或lock.notifyAll()或接收到interrupt信号才能退出等待状态,TIMED_WAITING/WATING下还需要关注下面几个线程状态:
waiting on condition:说明线程等待另一个条件的发生,来把自己唤醒;
on object monitor: 说明该线程正在执行obj.wait()方法,放弃了 Monitor,进入 “Wait Set”队列;
BLOCKED
此时的线程处于阻塞状态,一般是在等待进入一个临界区“waiting for monitor entry”,这种状态是需要重点关注的
哪些线程状态占用CPU
处于TIMED_WAITING、WATING、BLOCKED状态的线程是不消耗CPU的,而处于RUNNABLE状态的线程要结合当前线程代码的性质判断是否消耗CPU:
服务器CPU占用过高处理方案相关推荐
- 高频面试题:服务器CPU占用过高怎么办?搞定只需简单7步
一. 前言 在Java开发岗位的面试中,时不时会出现一些运维类的题目,其实这也反映了后端面试的一种趋势.现在企业对后端开发的要求越来越全面,不仅要求我们会写代码,还要我们能够进行部署和运维. 今天九哥 ...
- 服务器CPU占用过高和哪些因素有关呢
服务器CPU占用过高和哪些因素有关呢 硬件因素 以下分别从CPU温度,CPU超线程,硬件配置,硬件驱动和待机方面分析. 1.CPU温度过高 如果CPU风扇散热不好,会导致CPU温度太高,使CPU自动降 ...
- 线上服务器CPU占用过高?7步带你搞定
一. 前言 在Java开发岗位的面试中,时不时会出现一些运维类的题目,其实这也反映了后端面试的一种趋势.现在企业对后端开发的要求越来越全面,不仅要求我们会写代码,还要我们能够进行部署和运维. 今天壹哥 ...
- win10服务器cpu占用过高,完美解决:Win10资源管理器占用CPU过高
Windows10资源管理器占用CPU过高该怎么办?因为Windows7系统结束了支持,所以现在很多朋友都升级更新了Windows10系统.在使用Win10系统的过程中,发现Windows资源管理器占 ...
- 【linux】oracle数据库cpu占用过高排查方案
将[%cpu]占用率最高的那条的[PID]复制取出,去数据库执行下面语句,即可查询出是哪条sql语句占导致cpu占用很高 SELECT sql_text FROM v$sqltext a WHERE ...
- win10服务器cpu占用过高,Win10 CPU占用率100%怎么办 Win10 CPU占用率过高解决方法
Win10 CPU占用率100%怎么办 ?Win10系统CPU占用率过高的问题比较常见,下面为大家带来 Win10 CPU占用率过高解决方法 ,一起来看看. 方法1: 导致CPU占用的另一个原因可能是 ...
- Java项目服务器cpu占用过高怎么办?
借用汤师爷的一句话:"麻匪一定要缴---没有麻匪的日子才是好日子". 作为程序员,bug一定是要处理的,没有bug的日子才是好日子!你想想,你正吃着火锅唱着歌,突然收到生产环境异常 ...
- Linux中JAVA服务器CPU占用过高(分析解决方法)
当发现生产环境CPU使用非常高,并且居高不下,导致服务器报警,需要快速定位,分析是什么地方占用CPU过高,推荐步骤如下: 1. 首先服务器查看占用cpu高的进程是哪一个,查出进程号 top 2.查询该 ...
- mc服务器cpu占用过高怎么办,我的世界崩服无报错 传送导致CPU爆满
我的世界崩服无报错 传送导致CPU爆满.服务器如果崩服报错了,这其实并不是很可怕的,最可怕的是崩服了米有任何报错数据产生,这是服主们应该时刻注意的.据统计,不少的服主会发现地图中有玩家传送就会导致CP ...
最新文章
- OpenCV的cvLoadImage函数
- kong 使用jwt RSA256证书
- 中间滑动 头部底部固定_固定抗震弹性支座报价技术参数
- 关于Zookeeper的几个问题
- 解决EXC_BAD_ACCESS错误的一种方法--NSZombieEnabled
- 目标检测——下采样的学习笔记
- SVM 超平面方程
- 通信协议(二)——SPI协议
- 2021-2022-1 线性代数知识点总结
- 基于SSH框架的电影订票系统网站的设计与实现
- java纸牌_Java纸牌拖拉机简单模拟
- 技术人如何自我成长?
- 2019年中科院信工所夏令营考核内容
- python报错Ran out of input
- win10打开蓝牙设备方法
- python分析链家二手房信息----数据分析实战(一)
- PHP的环境安装基本的配置
- python计算差商_用Python求函数的差商
- 【机器学习应用】机器学习之无监督学习
- 蝉知CMS 7.X XSS漏洞复现