zoukankan      html  css  js  c++  java
  • 如何回答“线上CPU100%排查”面试问题

    案例:

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

    把上述代码放到项目中,打成jar包,然后丢到服务器上,使用java -jar xxx.jar命令运行jar包;

    使用 top -c  查看cpu情况:

    使用 top -Hp 126018 查看一个进程的线程运行信息列表,可按下P,进程按照cpu使用率排序

    上图pid是十进制的数据,需要将其转为十六进制,使用命令 printf '%x' 126019 输出 :1ec43

    [appdeploy@CNSZ22VL3901:/home/appdeploy]$printf '%x' 126019
    1ec43

     

    使用命令将进程快照导出:

    jstack -l 126018 > ./126018.stack

    然后使用less命令查看线程1ec43干了什么:

    "main" #1 prio=5 os_prio=0 tid=0x00007f9eac008800 nid=0x1ec43 runnable [0x00007f9eb294a000]
       java.lang.Thread.State: RUNNABLE
            at com.sf.App.main(App.java:13)
    
       Locked ownable synchronizers:
            - None
    
    "VM Thread" os_prio=0 tid=0x00007f9eac0f9000 nid=0x1ec46 runnable 
    
    "GC task thread#0 (ParallelGC)" os_prio=0 tid=0x00007f9eac01d800 nid=0x1ec44 runnable 
    
    "GC task thread#1 (ParallelGC)" os_prio=0 tid=0x00007f9eac01f800 nid=0x1ec45 runnable 
    
    "VM Periodic Task Thread" os_prio=0 tid=0x00007f9eac155000 nid=0x1ec4d waiting on condition 
    
    JNI global references: 9

    从上面日志可以看出该线程存在死锁《Locked ownable synchronizers》,具体代码:com.sf.App.main(App.java:13)

    执行过程中遇到的如下问题:

    no main manifest attribute, in demo-1.0.jar

  • 相关阅读:
    alpha冲刺9
    alpha冲刺8
    alpha冲刺7
    alpha冲6
    随堂小测-同学录
    alpha冲刺5
    任务3
    任务2
    任务1
    网站用户行为分析
  • 原文地址:https://www.cnblogs.com/hujinshui/p/10338522.html
Copyright © 2011-2022 走看看