【面试】线上 CPU 100% 问题排查

这篇具有很好参考价值的文章主要介绍了【面试】线上 CPU 100% 问题排查。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

回答套路一般为:线上服务器没有排查过,线上服务器只有运维才有操作权限。在平时开发的时候,在测试服务器上排查过。

一、复现代码

public class Test 
{
    public static void main( String[] args )
    {
        int a = 0;
        while (a < 100) {
            a *= 10;
        }
    }
}

二、将代码打包成 jar 包,上传到服务并运行

2.1、将代码打包成 jar 包

参考: 点我

2.2、传到服务并运行

运行好的效果如下
【面试】线上 CPU 100% 问题排查,Java基础,面试,java,cpu 100

三、拿到让 cpu 100% 的进程 id、线程 id

3.1、拿到进程 id

通过 top 命令,就可以看到让 cpu 100% 的进程 id,pid 就是进程id
【面试】线上 CPU 100% 问题排查,Java基础,面试,java,cpu 100

3.2、拿到让 cpu 100% 的线程 id

使用 top -Hp 进程id ,拿到让 cpu 100% 的线程 id
【面试】线上 CPU 100% 问题排查,Java基础,面试,java,cpu 100

四、导出对应快照(用来分析问题)

jstack -l 进程id > ./进程id.stack

【面试】线上 CPU 100% 问题排查,Java基础,面试,java,cpu 100
找到生成的快照,使用 more / less 命令查看快照内容,在快照内容里搜索线程 id 的十六进制,找到问题代码。
【面试】线上 CPU 100% 问题排查,Java基础,面试,java,cpu 100

五、建议

强烈建议,自己实际操作一遍,加深印象。

六、最后

我是 xiucai,一位后端开发工程师。

如果你对我感兴趣,请移步我的个人博客,进一步了解。文章来源地址https://www.toymoban.com/news/detail-672975.html

  • 文中如有错误,欢迎在评论区指正,如果这篇文章帮到了你,欢迎点赞和关注😊
  • 本文首发于个人博客,未经许可禁止转载💌

到了这里,关于【面试】线上 CPU 100% 问题排查的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【记一次线上事故的排查思路】- CPU飙升问题排查

    由于项目排期较紧,临时从其他组调来三个开发资源帮我一起做项目,难免上线的时候大家的需求一块上线。 问题来了,上线三天后,线上CPU总是莫名奇妙的突然飙升,飙升后CPU并未降下来,而是一直处在高点。 由于是线上导致的问题,CPU超限后,会自动重启项目,未能保

    2024年01月23日
    浏览(49)
  • Java线上故障排查(CPU、磁盘、内存、网络、GC)+JVM性能调优监控工具+JVM常用参数和命令

    根据服务部署和项目架构,从如下几个方面排查: (1)运用服务器:排查内存,cpu,请求数等; (2)文件图片服务器:排查内存,cpu,请求数等; (3)计时器服务器:排查内存,cpu,请求数等; (4)redis服务器:排查内存,cpu,连接数等; (5)db服务器:排查内存,cpu,连接数

    2024年02月07日
    浏览(61)
  • Java应用CPU占用过高问题排查

    测试环境CPU突然升高,日志查询无异常,可以通过使用jvm的调试工具定位问题。 1.定位java服务进程 2.定位java线程 3.定位代码块 1.定位进程 获取cpu占用高的进程pid 2.定位线程 转16进制 3.定位代码 目的:将当前堆栈信息保存为文件,通过16进制的TID查找问题所在的代码块;

    2024年02月12日
    浏览(44)
  • Java 开发,当cpu占用率100%,window和Linux分别如何定位问题

    导言 Java服务,有时候会遇到CPU 100%的问题,对于这样的问题,我们如何快速定位并解决呢?一般会有如下三个步骤: 找到最耗CPU的进程 找到这个进程中最耗CPU的线程 使用jdk自带工具jstack 查看堆栈信息,定位线程的什么操作消耗了大量CPU,定位对应代码 Java程序CPU占用过高

    2024年02月04日
    浏览(36)
  • 排查Docker容器Java程序CPU过高问题以及处理方法

    因为Docker里java程序运行环境是用的jre,没有top和jstack命令,所以要在容器里安装top和jattach,来查看和导出线程信息。 系统:Debian10 镜像:openjdk:8u275-jre-slim-buster 容器ID:99abe55a98dc 一.安装top:     1.进入容器:       2.因为官方镜像地址太慢,所以 修改源地址:https://develop

    2024年02月11日
    浏览(67)
  • k8s排查Java应用CPU负载过高问题

    因为k8s发布的pod还未加入资源的监控,在查看pod负载时发现其中pod占用1核CPU 2.1通过debug排查 下一步可以到对应的node节点查看对应进程的信息,也可以通过debug在当前节点进行排查(当节点太多懒得登录过去时) top命令找到所在节点进程信息,找到问题进程 查看详细线程 通

    2024年02月05日
    浏览(49)
  • java性能安全:OOM问题排查、Arthas分析高CPU问题、防止Dos攻击

    一、OOM问题 分析流程: 第一步:进程分析,分析老年代回收次数和消耗时间 第二步:日志分析,找出OOM发生时间的日志来锁定执行方法,对应的机器ip 第三步:找到对应的ip机器查看,进一步分析 第四步:下载的dump,使用mat分析堆内存,找到堆占用率前3,查看堆指向 问题

    2024年02月03日
    浏览(36)
  • oracle服务器的CPU占用率一直100%排查方式

    公司开发、测试、演示环境,三个环境的oracle服务器无论服务器是否空闲, CPU的占用率一直是100%, 一直也没有找到问题原因,今天就花了一整天时间研究这个问题。 awr报告是oracle 10g下提供的一种性能收集和分析工具,它能提供一个时间段内整个系统资源使用情况的报告,

    2024年02月14日
    浏览(42)
  • 【Java高CPU占用排查步骤】

    当Java应用程序在Linux系统上的CPU使用率达到100%时,可能会导致系统响应变慢,甚至无响应,影响应用程序的正常运行。下面是排查Java应用程序CPU使用率高的步骤: 可以使用top命令查看Linux系统上Java进程的CPU使用率,找到占用CPU资源较高的进程。可以按照CPU使用率排序,找到

    2024年02月10日
    浏览(51)
  • Java进程CPU高负载排查步骤

    近期发现服务器Java进程负载,超过100% 登录服务器,执行top命令,查看CPU占用情况,找到进程的pid 很容易发现,PID为29706的java进程的CPU飙升到700%多,且一直降不下来,很显然出现了问题。 使用 top -Hp pid 命令(为Java进程的id号)查看该Java进程内所有线程的资源占用情况 很容

    2024年02月14日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包