Arthas解决CPU飙高和定位死锁问题,JProfiler解决OOM问题
目录
Arthas解决CPU飙高和定位死锁问题,JProfiler解决OOM问题
Arthas下载地址:
下载之后进入找到arthas-boot.jar,然后执行以下命令
java -jar arthas-boot.jar
选择你需要监控的进程输入序号即可
我监控控制层
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反复处理死循环
Arthas定位死锁
定位死锁
thread -b
JProfiler定位OOM
设置vm启动参数
-Xms100m -Xmx100m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./dump.hprof