[JVM] CPU 분석

2021. 12. 16. 17:24 JAVA/JVM

JMX를 이용해서 자바 어플리케이션의 상태를 모니터링 한다. 모니터링 하던 중 CPU가 갑자기 튀는 현상이 발생했다. 그래서 원인을 찾아야 하는데.. 어떻게할까?

1. top 으로 java가 CPU를 많이차지하는지 확인
- 대부분의 경우 java겠지만, 혹시나 다른 프로세스가 CPU를 차지하고있지는 않은지 확인한다. java가 아닌 다른 프로세스가 CPU를 많이차지하고 있으면 그 프로세스가 원인이므로 쉽게 끝날 수 있다. 하지만 java가 원인이라면... 어떤 스레드가 차지하는지 분석이 필요하다. 

2. java가 많이 차지한다면, top 에서 H(대문자)를 입력해서 스레드 단위로 CPU점유율 확인
$ top
- 터미널에서 top을 입력하면 현재 동작중인 스레드와 CPU, Memory 점유율을 확인할 수 있다. top만 입력하면 프로세스 단위기고, top 명령어가 동작중인 상태에서 대문자 H를 입력하면 스레드단위로 확인할 수 있다. 스레드의 PID를 확인한다. 

3. 스레드 덤프 준비 & 분석
- 스레드 덤프 없이는.. 상세한 분석이 불가능하다. 2번에서 찾은 PID를 이용해서 스레드덤프에서 검색한다. 해당 스레드의 자세한 상태를 살펴본다. 

 

[출처] [JVM] CPU 분석