관리하는 사이트의 최근 비정상적인 CPU, 메모리 점유율(Heap Space 에러)로 인해 접속이 되지않는 현상이 있었다.
팀장님의 가이드에 따라 명령어를 익히고, 기록으로 남긴다.
먼저 원인 파악을 위해 서버를 내리기 전 시스템의 상태를 확인해야 한다.
--------------------------
top -b -d 1 > top.log
--------------------------
top 명령어를 통해 cpu 상태를 확인할 수 있고 '-b' 옵션은 배치를 의미, '-d 1' 은 기존 3초 간격 출력에서 interval을 1초로 설정!
그리고 '> top.log' 를 통해 출력되는 상태를 top.log 파일로 저장한다는 의미이다.
(관련 링크 : https://twpower.github.io/114-difference-between-single-and-double-greater-than-sign )
--------------------------------------------
jstat -gc 111111 1000 > 111111.jstat
--------------------------------------------
JDK에 포함된 명령어인 jstat 명령어로 heap 메모리 상태를 점검할 수 있다.
-gc 옵션으로 가비지컬렉트 된 heap 데이터를 확인한다.
여기서도 마찬가지로 121126.jstat이라는 이름의 파일로 기록을 남긴다. 121126는 프로세스 ID이다.
--------------------------------------------
jstack 111111 > 111111.jstack
jstack 111111 > 111111-2.jstack
--------------------------------------------
마지막으로 jstack + PID 명령어를 통해 Java 스레드 덤프를 생성해 파일로 저장한다. 해당 명령어를 통해 어떤 스레드에서 문제가 발생하고 있는지 파악이 가능하다위와 같이 분석한 결과를 파일로 남겨두면 서버를 재기동 하더라도 오류 발생 상황 당시의 기록이 남아 있어 추후에 분석이 편리해진다
'개발 > Linux' 카테고리의 다른 글
[Linux]ps aux (0) | 2022.04.14 |
---|---|
[Linux]간단 명령어 - which (0) | 2022.02.22 |