본문 바로가기
리눅스

[jstat] 메모리 모니터링.

by 파워킴 2021. 7. 14.
반응형

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 가 정리되기전 계속된 메모리 누적이 있는지 주기적인 모니터링이 필요하다.

 

반응형

댓글