WAS에 속도 느림에는 여러가지 이유가 있겠지만,
원인 파악을 하는데 어떤 식으로 진행을 하였는지 간단하게 적어보겠다.
제일 먼저 CPU 점유율을 확인하였다.
top
실제로 CPU가 굉장히 많이 점유하고 있었다.
문제가 발생했다는 것은 파악하였지만 어떤 원인인지 파악하지 못해 jstat / jmap / jstack으로 GC 및 힙, 스레드 상태를 확인하고 덤프파일로 생성하였다.
GC는 Gabarge Collection으로 메모리 관리 기법 중 하나다. 프로그램이 동적으로 할당했던 메모리 영역 중에서 필요없게 된 영역을 해제하는 기능이다.
GC의 경우 -verbose옵션으로 log 파일을 생성해줄 수 있다.
B.2.3 -verbose:gc Option
The -verbose:gc option enables logging of garbage collection (GC) information. It can be combined with other HotSpot VM specific options such as -XX:+PrintGCDetails and -XX:+PrintGCTimeStamps to get further information about the GC. The information output includes the size of the generations before and after each GC, total size of the heap, the size of objects promoted, and the time taken.
jstat - Java Virtual Machine Statistics Monitoring Tool
jmap - Memory Map
jstack - Stack Trace
서비스 실행 중에 덤프를 뜨는 것도 많은 자원을 소모하기 때문에 주의해야 한다.
위와 같은 사항을 확인해보면서 GC 프로세스에 대해 다시 확인해보았다.
Leak Suspect를 확인해보니 OracleTimeoutPollingThread가 발생하여 다른 의심 사항들도 복합적으로 일어나 OOM도 같이 발생한듯 하다.
SocketTimeOutException의 경우 default 0으로 해당 예외사항이 발생했을 경우 무한 대기 상태에 빠질 수 있다하여 시간을 지정해주었다.
일단 이렇게 경과를 두고 봐서 해결이 됐는지 확인을 해야겠다.
참고 URL : http://d2.naver.com/helloworld/6043
http://www.oracle.com/technetwork/java/javase/clopts-139448.html#gbmtm
http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html
https://ko.wikipedia.org/wiki/%EC%93%B0%EB%A0%88%EA%B8%B0_%EC%88%98%EC%A7%91_(%EC%BB%B4%ED%93%A8%ED%84%B0_%EA%B3%BC%ED%95%99)
'server' 카테고리의 다른 글
fluentd와 함께하는 검색 데이터 수집 (0) | 2019.06.26 |
---|---|
Redisson (0) | 2019.06.26 |
ModelMapper (0) | 2019.06.25 |
Lambda@Edge를 활용한 이미지 리사이징 (1) | 2019.03.24 |
로그 관리를 위한 logrotate.d (0) | 2016.12.16 |
댓글