一. 前言

在Java开发岗位的面试中,时不时会出现一些运维类的题目,其实这也反映了后端面试的一种趋势。现在企业对后端开发的要求越来越全面,不仅要求我们会写代码,还要我们能够进行部署和运维。

今天九哥就结合一个真实的项目案例,来给大家讲解一道关于运维类的真实面试题。题目如下:有一个SpringBoot项目上线后,发现其部署所在的Linux服务器CPU占用高,如何排查解决?

这是一道比较常见的线上排错问题,接下来就让我们我们来分析一下这个问题的解决过程吧。

二. 解决过程

1.问题要点

该问题包含如下两个要点:

  • 如何观察Linux服务器CPU占比;

  • 如何定位到产生问题的Java代码所在线程,判断出当前问题线程到底在执行什么方法。

2.排查过程

2.1 通过top命令找到CPU消耗过高的进程id

如上图,我们发现CPU占用高的进程pid为71288。

2.2 通过jps输出,配合上面的pid定位到出现问题的具体应用

2.3 执行top -p pid 单独监控该进程

2.4 监控界面输入H,获取当前进程下所有的线程信息,找到CPU消耗特别高的线程编号

由于Java是多线程程序,如果我们只知道进程id还不足以找到出现问题的线程。因此这里需要借助top命令的H交互模式,找到真正CPU占用过高的线程。本案例中的pid是71289,那么接下来距离找出出问题 的方法已经不远了。

2.5 jstack输出线程信息

这一步也是定位问题的关键。jstack命令能够打印出当前所有java栈中的线程信息,其中必然包括出问题的线程。剩下我们要做的就是根据线程的id,找到这个线程正在执行的方法即可。这里71289是十进制整数,而jstack日志中的线程id是十六进制,因此需要做以下转换。

2.6 打开刚刚生成的jstack日志文件,查找关键字 11679

2.7 根据日志,发现出问题的代码在 FmmallApp类的 第14行。

至此,我们就把问题定位完成了,接下来就可以去源代码中进行核对了。

三. 相关命令总结

本文中,我们所使用的Linux服务器端操作命令如下:

# 1.先通过top命令找到消耗cpu很高的进程id
top
# 通过jps的输出配合上面的pid可以定位到出问题的应用是哪个
jps -lv
# 这一步可以得到出问题的进程pid 71288# 2.执行top -p pid单独监控该进程
top -p pid
# 3.监控界面输入H,获取当前进程下的所有线程信息,找到消耗cpu特别高的线程编号
#  这一步可以得到出问题的线程的pid 71289 # 4.jstack 输出线程信息
jstack pid >> stack.txt
注意,这里要使用的是java进程的pid# 5.查找高占用线程,这里需要把线程id转16进制
printf "%x\n" pid
# 6.在stack.txt 中查找线程信息,定位到问题线程的问题方法
# 7.查找出问题的方法的源代码,解决问题。

以后如果你再遇到线上服务器出现故障,知道该怎么解决了吗?

高频面试题:服务器CPU占用过高怎么办?搞定只需简单7步相关推荐

  1. 线上服务器CPU占用过高?7步带你搞定

    一. 前言 在Java开发岗位的面试中,时不时会出现一些运维类的题目,其实这也反映了后端面试的一种趋势.现在企业对后端开发的要求越来越全面,不仅要求我们会写代码,还要我们能够进行部署和运维. 今天壹哥 ...

  2. 服务器CPU占用过高和哪些因素有关呢

    服务器CPU占用过高和哪些因素有关呢 硬件因素 以下分别从CPU温度,CPU超线程,硬件配置,硬件驱动和待机方面分析. 1.CPU温度过高 如果CPU风扇散热不好,会导致CPU温度太高,使CPU自动降 ...

  3. win10服务器cpu占用过高,完美解决:Win10资源管理器占用CPU过高

    Windows10资源管理器占用CPU过高该怎么办?因为Windows7系统结束了支持,所以现在很多朋友都升级更新了Windows10系统.在使用Win10系统的过程中,发现Windows资源管理器占 ...

  4. win10服务器cpu占用过高,Win10 CPU占用率100%怎么办 Win10 CPU占用率过高解决方法

    Win10 CPU占用率100%怎么办 ?Win10系统CPU占用率过高的问题比较常见,下面为大家带来 Win10 CPU占用率过高解决方法 ,一起来看看. 方法1: 导致CPU占用的另一个原因可能是 ...

  5. Java项目服务器cpu占用过高怎么办?

    借用汤师爷的一句话:"麻匪一定要缴---没有麻匪的日子才是好日子". 作为程序员,bug一定是要处理的,没有bug的日子才是好日子!你想想,你正吃着火锅唱着歌,突然收到生产环境异常 ...

  6. Linux中JAVA服务器CPU占用过高(分析解决方法)

    当发现生产环境CPU使用非常高,并且居高不下,导致服务器报警,需要快速定位,分析是什么地方占用CPU过高,推荐步骤如下: 1. 首先服务器查看占用cpu高的进程是哪一个,查出进程号 top 2.查询该 ...

  7. mc服务器cpu占用过高怎么办,我的世界崩服无报错 传送导致CPU爆满

    我的世界崩服无报错 传送导致CPU爆满.服务器如果崩服报错了,这其实并不是很可怕的,最可怕的是崩服了米有任何报错数据产生,这是服主们应该时刻注意的.据统计,不少的服主会发现地图中有玩家传送就会导致CP ...

  8. elasticsearch服务器CPU 占用过高 调整

    elasticsearch服务器CPU100%分析 1.通过top命令查询占用CPU高的进程ID 然后ps aux | grep [pid] 2.发现线程31342.28478等占用比较多的CPU资源 ...

  9. win10服务器cpu占用过高,解决win10服务主机内存和cpu高占用的解决方法

    有些使用Win10系统的用户反馈说,电脑总是卡到不行,检查后发现原来是服务主机,本地服务占用了大量内存和cpu,导致电脑运行起来并不那么流畅.那么,遇到这种问题该怎么办呢?接下来,小编就向大家分享解决 ...

最新文章

  1. 在活动目录中设置和管理发布打印机
  2. 荣发护肤护甲增强配方 Hair, Skin and Nails Plus 100 tablets
  3. iOS.Animations.by.Tutorials.v2.0汉化
  4. php3d按钮,CSS实现3D按钮效果
  5. ITK:减去两个图像
  6. linux arp 文件,LINUX 下ARP 的查找
  7. php sql desc,PHP SQL 查询封装
  8. 可以以数据内容当列名来统计数据
  9. day34-常见内置模块三(re模块)
  10. 计算机的原理两条分别是,微机原理习题答案4
  11. Ajax Loading进度条gif在线生成网站Preloaders.net
  12. 概率论、随机过程知识梳理——思维导图
  13. 工作两年前端经验分享
  14. 创业4年女掌门刘静瑜,创造动力电池,中创新航市值超600亿
  15. mac 更新系统时间
  16. VMBox加载拷贝的vid报错E_INVALIDARG (0x80070057) Cannot register the hard disk 'D:\VMBox\win7.vdi' {7bca5a3
  17. win7系统(64/32位)安装office2010时提示需要msxml6.10.1129,问题的解决记录
  18. Linux基础命令(三).md
  19. AcWing120防线 经典题二分+前缀和+等差数列
  20. 蓝图(Blueprint)理解

热门文章

  1. 收藏的博客 -- Qt/C++学习
  2. TP-LINK路由器如何设置联网设备的IP?
  3. 「构建企业级推荐系统系列」实时个性化推荐介绍
  4. 使用PS制作噪质感图画
  5. iphonex适配游戏_iPhoneX怎么玩王者荣耀 iPhoneX适配常见问题汇总
  6. oCam_v520.0 录屏软件 资源下载
  7. 手把手教你开发一款1024程序员节日历提醒服务
  8. VS注释与取消注释快捷键
  9. 软工视频学习笔记——02
  10. 怎么剪辑视频教程,剪辑视频的软件怎么剪辑视频制作原创视频