线上服务器CPU负载过高的问题解决过程
线上服务器CPU负载过高的问题解决过程
一.找到CPU占用过高进程
执行top命令,发现PID为12443的Java进程占用CPU高达350%,出现故障。
二.定位具体线程或代码
找到该进程后,接下来要定位具体的线程或代码。首先我们使用如下命令来显示线程列表,并按照CPU占用高的线程排序:
[root@localhost logs]# ps -mp 12443 -o THREAD,tid,time | sort -rn
显示结果如下:
USER %CPU PRI SCNT WCHAN USER SYSTEM TID TIME
root 10.6 17 - - - - 1838 10:12:20
root 10.2 17 - - - - 3223 10:12:16
找到了耗时最高的线程1838,占用CPU时间有12分钟了!
或者使用 top -Hp pid(shift+p 按cpu排序,shift+m 按内存排序)命令来定位:
top -Hp 8958
获取到这个进程下面所有线程,通过查看%CPU找到最耗费CPU的是线程PID
将需要的线程ID转换为16进制格式:
[root@localhost logs]# printf "%x\n" 1626
e18
最后打印线程的堆栈信息:在执行 jstack -l [PID] > /tmp/output.txt
之后可以对 /tmp/output.txt
进行分析
开头交代当前 dump 的时间和 JVM 基本信息
2019-06-12 16:13:06
Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.152-b16 mixed mode):
接下来就是程序的线程信息
"JetCacheHeavyIOExecutor3" #85 daemon prio=5 os_prio=0 tid=0x00007f76a93ab800 nid=0x1c47a waiting on condition [0x00007f7696acb000]java.lang.Thread.State: WAITING (parking)at sun.misc.Unsafe.park(Native Method)- parking to wait for <0x00000000c9863140> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1088)at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)at java.lang.Thread.run(Thread.java:748)Locked ownable synchronizers:- None
将输出的信息进行匹配就能找出有问题的代码。
线上服务器CPU负载过高的问题解决过程相关推荐
- 原创|面试官:线上服务器CPU占用率高如何排查定位问题?
国外开发者平台 HankerRank 发布的 2018 年开发者技能调查报告中有一项关于"雇主最看重哪些核心能力"的调查,结果显示如下: 排名前几的比较受重视的能力分别为:解决问题 ...
- 服务器cpu占用率高怎么解决,线上服务器CPU占用率高怎么办?
如果线上服务器发生CPU占用率高时,应该如何排查并定位问题. 1.问题发现 本文整理自一个真实的案例,是楼主负责的业务,在一次大促之前的压测时发现了这个问题. 在每次大促之前,我们的测试人员都会对网站 ...
- 服务器定位cpu高占用率代码php,面试官:线上服务器CPU占用率高如何排查定位问题?,...
面试官:线上服务器CPU占用率高如何排查定位问题?, 国外开发者平台 HankerRank 发布的 2018 年开发者技能调查报告中有一项关于"雇主最看重哪些核心能力"的调查,结果 ...
- 面试官:线上服务器CPU占用率高如何排查定位问题?
开发十年,就只剩下这套架构体系了!! 国外开发者平台 HankerRank 发布的 2018 年开发者技能调查报告中有一项关于"雇主最看重哪些核心能力"的调查,结果显示如下:  ...
- 线上服务器CPU占用率高如何排查定位问题?
(关联着看看这篇文章:https://blog.csdn.net/u011277123/article/details/103768939) 解决问题的能力以超高比例排名第一,这也是为什么很多面试过程 ...
- 线上服务器CPU占用过高?7步带你搞定
一. 前言 在Java开发岗位的面试中,时不时会出现一些运维类的题目,其实这也反映了后端面试的一种趋势.现在企业对后端开发的要求越来越全面,不仅要求我们会写代码,还要我们能够进行部署和运维. 今天壹哥 ...
- 记录一次线上CPU负载过高的排查过程
背景 一大早收到运维同学反馈.线上某台机器cpu的负载达到了97%以上,为了不影响机器上服务的正常运行,急需找到导致负载过高的原因并将负载降到合理的区间. 用到命令 top/uptime:查看负载情况 ...
- 一次线上服务器cpu使用率超过1250%的排查与优化
项目背景: 将35家海外酒店的房型数据通过40个定时任务同步到本地mongodb,这里用了5台服务器来部署项目,mongodb采用分片集群部署.定时任务采用lts,一个小时同步一次所有数据.项目中用多 ...
- 线上告警CPU使用率过高排查分析
本文主要列举了如下几种可能造成CPU过高的场景进行排查分析. 1.代码死循环 启动了两个线程(线程一定要起一个合适的名称,出了问题时方便排查),一个线程空循环,一个线程每500ms循环一次. publ ...
最新文章
- 限免!百名AI大咖,20大技术和行业论坛,不可错过的开发者嘉年华
- python---简单的接口测试实例
- 韦布望远镜现在到哪儿了:距离地球60万公里,NASA还说可以用10年
- C#操作Access数据库中遇到的问题(待续)
- Centos换源 加快软件安装速度 2021-03-17
- GridView 控件的执行顺序
- java 10000阶乘_Java ForkJoinPool: 3秒计算100万的阶乘
- Linux学习-15-学习LVM逻辑卷
- 阿里工程师是如何系统化地总结缓存相关知识的
- matlab中count是干什么,matlab编程潮流计算的count值与什么有?
- python qt库,用于 Python 的高级 GUI 库(Qt 和 PyQt)(1)Unix系统 -电脑资料
- 码云怎么创建公开的仓库_使用码云创建属于你的免费私有git仓库
- 微信小程序 图片长按识别功能 笔记
- 一年工作经验,两周的面试,拿到几个offer的面试经验总结
- 特惠快车和快车的区别,滴滴特惠快车老司机说了实话?
- C语言真的太强大了,C几乎无处不在!
- 拍卖系统业务演进过程(一)
- java中文乱码终极解决方案
- Ghost11、Acronis12和贝壳还原3.0.8的测试对比报告
- 如何显示计算机中本地用户和组,win10电脑管理界面如何显示出“本地用户和组”功能...
热门文章
- TCP/IP卷一:49---ICMP之(与ICMP相关的攻击)
- 关于SOT-89-3封装的线性稳压器LDO的大坑
- API接口幂等性设计
- 合金装备幸存官网服务器维修,合金装备幸存联机要注意什么_联机注意事项分享_3DM单机...
- 圆管当量直径_非圆形管道当量直径的计算公式为:de=4A/X。式中X表示( )
- 破解入门(二)-----认识OllyDBG
- 【小米春招】小米22届春招、23届实习生内推【全岗位】
- 如何从零开始学习Ruby
- Oracle导出空(无数据)表
- Nagiosxi的一个RCE漏洞利用脚本