쓰레드 단면 분석
1. 쓰레드 단면을 30초~1분 간격으로 5~10회 생성한다.
2. ps -Lf -p <pid>를 통해서 사용량이 가장 많은 LWP (Light weight protocol - 쓰레드 아이디) 찾아냄..
3. TDA -> threadLogic 을 이용하여 단면덤프를 열어 분석한다.. (java.net 에서 다운로드 받음)
메모리 단면 분석
1. 메모리 단면 덤프 : jmap -dump:format=b,file=<덤프파일경로+명.hprof> <pid>
2. 메모리 덤프파일 분석 : 이클립스 MAT 이용 (파일 확장자는 hprof)
3. visualVM 이용
총론
1. 쓰레드 단면확인
2. 쓰레드별 CPU 사용시간 확인
3. 쓰레드 문제 분석
만약 GC 관련 쓰레드가 원인이면
1. jstat 으로 메모리 사용량 확인
--> jstat -gcutil -h20 -t 7251 3000 3000
-> gcutil : gcutil 에 대해서 수행
-> -h20 : 20라인마다 header 찍음
-> -t : time stamp 프린트(JVM 이 스타트 된 이후의 시간)
-> 7251 : 프로세스 id
-> 3000 : interval (ms 단위)
-> 3000 : count
--> 결과 화면 설명
- S0 : Survivor 영역 0 의 사용율 (현재의 용량에 대한 퍼센티지)
- S1 : Survivor 영역 1 의 사용율 (현재의 용량에 대한 퍼센티지)
- E : Eden 영역의 사용율 (현재의 용량에 대한 퍼센티지)
- O : Old 영역의 사용율 (현재의 용량에 대한 퍼센티지)
- P : Permanent 영역의 사용율 (현재의 용량에 대한 퍼센티지)
- YGC : Young 세대의 GC 이벤트수
- YGCT : Young 세대의 가베지 콜렉션 시간
- FGC : 풀 GC 이벤트수
- FGCT : 풀 가베지 콜렉션 시간
- GCT : 가베지 콜렉션총시간
2. gcore 로 메모리 단면 파일 생성 - 리눅스만 가능한 명령어임.
gcore -o <파일명> <pid>
3. jmap 으로 파일 변환 (단면 생성)
- gcore 파일 > jmap 으로 변환 : jmap -dump:format=b,file=<덤프파일경로+명.hprof> <자바실행파일위치> <코어덤프파일>
- jmap 으로 단면파일 생성 : jmap -dump:format=b,file=<덤프파일경로+명.hprof> <pid>
4. 메모리 문제 분석
5. 분석결과물 만들기…….
<장애 진단 절차>
1. 장애유형 확인
2. 시스템 기본정보 확인
3. 각종 데이터를 통한 원인진단
4. 원인이 발견되면 제거 후 확인
5. 진단 결과 보고서 작성
'백엔드 > Java' 카테고리의 다른 글
자바 변수 (0) | 2024.03.20 |
---|---|
자바 자료구조 (0) | 2024.03.20 |
다른 바이트 순서를 가진 시스템과의 통신 (0) | 2024.03.20 |
JVM 튜닝 5 (0) | 2024.03.20 |
JVM 튜닝 3 (0) | 2024.03.20 |
JVM 튜닝 2 (0) | 2024.03.20 |
JVM 튜닝 1 (0) | 2024.03.20 |
Java Time과 System Time 의 문제해결 (0) | 2024.03.20 |
댓글