반응형
JVM 메모리 모니터링.
* 톰캣 서버 운영중 메모리 상태를 확인 하거나 GC 상태를 확인하기 위해 주기적인 모니터링이 필요하다.
톰캣 프로세스 확인
$> ps -ef | grep tomcat
jstat
* jstat 에는 여러가지 옵션등이 있으나 일반적으로 gc 모니터링시 gcutil을 많이 사용한다.
옵션 | 기능 |
gc | 각 힙(heap) 영역의 현재 크기와 현재 사용량(Eden 영역, Survivor 영역, Old 영역등), 총 GC 수행 횟수, 누적 GC 소요 시간을 보여 준다. |
gccapactiy | 각 힙 영역의 최소 크기(ms), 최대 크기(mx), 현재 크기, 각 영역별 GC 수행 횟수를 알 수 있는 정보를 보여 준다. 단, 현재 사용량과 누적 GC 소요 시간은 알 수 없다. |
gccause | -gcutil 옵션이 제공하는 정보와 함께 마지막 GC 원인과 현재 발생하고 있는 GC의 원인을 알 수 있는 정보를 보여 준다. |
gcnew | New 영역에 대한 GC 수행 정보를 보여 준다. |
gcnewcapacity | New 영역의 크기에 대한 통계 정보를 보여 준다. |
gcold | Old 영역에 대한 GC 수행 정보를 보여 준다. |
gcoldcapacity | Old 영역의 크기에 대한 통계 정보를 보여 준다. |
gcpermcapacity | Permanent 영역에 대한 통계 정보를 보여 준다. |
gcutil | 각 힙 영역에 대한 사용 정도를 백분율로 보여 준다. 아울러 총 GC 수행 횟수와 누적 GC 시간을 알 수 있다. |
* 실행중인 톰캣 서버의 gc 상태 확인
$> jstat -gcutil -h5 [tomcat pid] 1000
h5 : header를 5라인마다
pid : tomcat pid
1000 : 1초마다
컬럼명 | 설명 |
S0 | Survivor 영역 0 의 사용율 (현재의 용량에 대한 퍼센티지) |
S1 | Survivor 영역 1 의 사용율 (현재의 용량에 대한 퍼센티지) |
E | Eden 영역의 사용율 (현재의 용량에 대한 퍼센티지) |
O | Old 영역의 사용율 (현재의 용량에 대한 퍼센티지) |
P | Permanent 영역의 사용율 (현재의 용량에 대한 퍼센티지) |
YGC | Young 세대의 GC 이벤트수 |
YGCT | Young 세대의 가베지 콜렉션 시간 |
FGC | 풀 GC 이벤트수 |
FGCT | 풀 가베지 콜렉션 시간 |
GCT | 가베지 콜렉션총시간 |
* E(eden) 영역이 100 차면 YGC (Young GC) 발생
* O(old) 영역이 100 차면 FGC (Full GC ) 발생
마무리
jstat 으로 GC 상태등을 확인 가능하므로 부하가 많이 걸리거나 GC 유발 코드가 있을때 반복적인 호출시 GC 처리 상태 등을 확인 할 수 있다.
메모리 사용량이 많은 서버의 경우 GC 가 정리되기전 계속된 메모리 누적이 있는지 주기적인 모니터링이 필요하다.
반응형
'리눅스' 카테고리의 다른 글
[log분석 2] 톰캣 Accesslog 통계 count 추출 (feature awk grep) (0) | 2021.07.14 |
---|---|
[로그분석 1] awk 기본사용법 (0) | 2021.07.13 |
[ CentOS 7 ]최소 설치 하기 (0) | 2017.03.18 |
[CentOS] 사용자 계정 다루기. (1) | 2017.02.22 |
리눅스 소스 받아 인스톨 하기. (0) | 2016.03.28 |
댓글