톰캣은 웹 어플리케이션 서버다
많은 자바 프로젝트가 톰캣위에서 구동되고 있는데,
다른 배포파일을 적용하거나 서버가 재가동될 필요가 있을 때, 서버를 내리게 된다
이 때, 스케쥴러가 돌고 있거나, 내부적으로 처리하는 로직, API의 많은 호출 등
여러가지 이유로 톰캣이 비정상적으로 종료될 때가 있다
비정상적으로 톰캣이 종료되면,
다시 서버를 재구동할 때 문제가 되기도 하고,
종료한 줄 알았던 톰캣이 PID를 물고 있어서 메모리를 점유하고 있는 경우도 있다
이런 경우에 종료된 톰캣의 흔적들을 처리해버리는 방법을 포스팅하려고 한다
1
먼저 톰캣이 구동되고 있는 리눅스 서버에 SSH로 접속한다
root 계정이 아니라면 root 계정으로 변경하자
[명령어]
su -
비밀번호 입력
2
jps 명령어 입력
해당 명령어는 현재 실행중인 JVM 프로세스 상태를 보여준다
해당 명령어를 입력해보자
root@dogmaster-app-server-20220714:~# jps
[결과]
1111 Jps
15388 Bootstrap
2629 Bootstrap
이런 식으로 Bootstrap이라는 프로세스가 중복되어 구동되고 있다
이 뜻은, 현재 JVM에서 동일한 프로세스를 두 개를 돌리고 있는 것으로
재구동을 진행할 때, 이전 톰캣이 비정상적으로 종료되었다는 것을 의미한다
메모리가 비정상적으로 높았다면, 여기 보이는 이 프로세스 때문이다
3
현재 구동중인 톰캣의 프로세스가 아닌 자식 죽이기
결과가 아래처럼 나올 것이다
(IP정보는 모두 0.0.0.0 처리했다. 본인이 구동하고 있는 정보의 IP가 출력된다 )
netstat -anlp | grep "java"
[결과]
tcp 0 0 127.0.0.1:0000 0.0.0.0:* LISTEN 15388/java
tcp 0 0 0.0.0.0:0000 0.0.0.0:* LISTEN 15388/java
tcp 0 0 0.0.0.0:0000 0.0.0.0:* LISTEN 15388/java
tcp 0 0 00.00.9.00:0000 0.0.0.0:0000 ESTABLISHED 15388/java
tcp 0 0 00.00.9.00:0000 0.0.0.0:0000 ESTABLISHED 15388/java
tcp 0 0 00.00.9.00:0000 0.0.0.0:0000 ESTABLISHED 15388/java
tcp 0 0 00.00.9.00:0000 0.0.0.0:0000 ESTABLISHED 15388/java
tcp 0 0 00.00.9.00:0000 0.0.0.0:0000 ESTABLISHED 15388/java
tcp 0 0 00.00.9.00:0000 0.0.0.0:0000 ESTABLISHED 15388/java
tcp 0 0 00.00.9.00:0000 0.0.0.0:0000 ESTABLISHED 15388/java
tcp 0 0 00.00.9.00:0000 0.0.0.0:0000 ESTABLISHED 15388/java
tcp 0 0 00.00.9.00:0000 0.0.0.0:0000 ESTABLISHED 15388/java
tcp 0 0 00.00.9.00:0000 0.0.0.0:0000 ESTABLISHED 15388/java
unix 2 [ ] STREAM CONNECTED 24702560 15388/java
unix 2 [ ] STREAM CONNECTED 24703095 15388/java
현재 사용하고 있는 PID가 어떤 것인지 한눈에 봐도 알 수 있다
15388이라는 PID를 사용하고 있으니,
PID 2629는 비정상적인 톰캣의 똥이라고 볼 수 있다
4
kill -9 2629
해당 PID 번호를 입력해서 킬해주면, 메모리 점유율이 낮아지는 것을 확인할 수 있다
'개발 > BACK' 카테고리의 다른 글
[Java] 문자열 붙이기/문자열 자르기 + JAVA 8 (0) | 2022.09.28 |
---|---|
[Java] Optional 클래스 사용법 + NullPointerException (0) | 2022.09.27 |
Mysql 테이블 명세서 추출하기 ~ 테이블 정보, 컬럼 정보 (0) | 2022.09.26 |
[Mysql] 특정 컬럼으로 정렬 후, 조회 데이터 ROW에 인덱스 추가하기 (0) | 2022.08.19 |
[Mysql] 날짜 차이 계산하기 (0) | 2022.08.19 |