본문 바로가기

개발/BACK

리눅스 계열 서버 톰캣이 죽지 않을 때 해결 방법

728x90


톰캣은 웹 어플리케이션 서버다

 

많은 자바 프로젝트가 톰캣위에서 구동되고 있는데,

 

다른 배포파일을 적용하거나 서버가 재가동될 필요가 있을 때, 서버를 내리게 된다

 

이 때, 스케쥴러가 돌고 있거나, 내부적으로 처리하는 로직, 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 번호를 입력해서 킬해주면, 메모리 점유율이 낮아지는 것을 확인할 수 있다

 

 

728x90