目录

Arthas解决CPU飙高和定位死锁问题,JProfiler解决OOM问题

Arthas解决CPU飙高和定位死锁问题,JProfiler解决OOM问题

Arthas下载地址:

下载之后进入找到arthas-boot.jar,然后执行以下命令

java -jar arthas-boot.jar

选择你需要监控的进程输入序号即可

https://i-blog.csdnimg.cn/direct/2d43ca4645514a0f8c22f5bbbb74fda2.png

我监控控制层



package com.hwg.logger.demos.web;

import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

@Slf4j
/**
 * @author <a href="mailto:chenxilzx1@gmail.com">theonefx</a>
 */

@RestController
public class BasicController {
    public Object lock1 = new Object();
    public Object lock2 = new Object();
    
   
    @GetMapping("/loop")
    public void  loop1(){
        log.info("loop");
        while (true){

        }
    }

    @GetMapping("/loop2")
    public void  loop2(){
        log.info("loop2");
        while (true){

        }
    }
    @GetMapping("/loop3")
    public void  loop3(){
        log.info("loop3");
        while (true){

        }
    }
    @GetMapping("/deadlock")
    public void DL() {
        new Thread(()->{
            synchronized (lock1){
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                synchronized (lock2){
                    log.info("lock1 over");
                }
            }
        }).start();
        new Thread(()->{
            synchronized (lock2){
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                synchronized (lock1){
                    log.info("lock2 over");
                }
            }
        }).start();

    }
}

Arthas定位CPU飙高

使用Postman分别发送3个请求导致CPU反复处理死循环

https://i-blog.csdnimg.cn/direct/dc4a720b8689481bba296f668285d627.png

https://i-blog.csdnimg.cn/direct/6a376abe49e14ab099ad0c9b3767fec9.png

https://i-blog.csdnimg.cn/direct/32a59e27f4cc4d029fe240bb55c30683.png

Arthas定位死锁

https://i-blog.csdnimg.cn/direct/e61691bc8ac64a8f9ff2670403ca4fa6.png

定位死锁

thread -b

https://i-blog.csdnimg.cn/direct/a8be19206ce44b97a87b4dba8d1dd9f8.png

JProfiler定位OOM

设置vm启动参数

-Xms100m -Xmx100m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./dump.hprof

https://i-blog.csdnimg.cn/direct/bb4b8bcc6ee24447befca3c7c0b873f3.png

https://i-blog.csdnimg.cn/direct/d0db1f844d4248468acb4c782f3741a5.png

https://i-blog.csdnimg.cn/direct/21fe12ce4cee4319a0da51103b9e8625.png