[JVM] CPU 분석
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 분석
'JAVA > JVM' 카테고리의 다른 글
G1GC (Java9 ~ 12 디폴트 GC) (0) | 2023.04.25 |
---|---|
레지스터 기반 vs 스택 기반 VM (0) | 2021.12.16 |
[JVM] OS 와 튜닝 (0) | 2021.12.16 |
[JVM] 객체 재사용 - Reference 종류, WeakHashMap (0) | 2021.12.16 |
[JVM] 메모리 사용량 줄이기 - Canonical Object (정규 객체) / String.intern() (0) | 2021.12.16 |
[JVM] WANR! Collections & Memory Leak (0) | 2021.12.16 |
[JVM] jcmd & jmap 힙 히스토그램 - 가장 많은 메모리를 소모하는 인스턴스 찾기 (0) | 2021.12.16 |
[JVM] G1 Collector - 더! 큰 객체 할당 (0) | 2021.12.16 |