Spring error - Port 8080 was already in use

Port 8080 was already in use 에러와 원인과 해결 방법

메시지

***************************
APPLICATION FAILED TO START
***************************

Description:

Web server failed to start. Port 8080 was already in use.

Action:

Identify and stop the process that's listening on port 8080 or configure this application to listen on another port.


Process finished with exit code 1

원인

Port 8080 was already in use - 서버를 구동시 에러가 발생한다.

이 에러가 발생하는 경우는 서버를 구동하려고 할 때 서버가 사용하려고 하는 port를 다른 프로세스나 프로그램이 점유하고 있는 경우이다. 일반적으로 서버를 정상적이지 않은 방법으로 종료하거나 종료된 경우 사용자에게는 사용을 하지 않는 것처럼 보이지만 실제로는 서버가 종료되지 않아서 다시 서버를 실행시킬 때 자주 나타나는 문제이다.

해결방법

이미 다른 프로세스가 사용하려는 포트를 사용 중 일 때 해결방법으로는 2가지 정도를 제시할 수 있는데 첫 번째는 강제로 프로세스를 종료시키는 방법이고, 두 번째는 사용하려는 port를 변경하는 방법이다. 여기서는 프로세스를 강제로 종료해서 해결하는 방법을 다룬다. port를 변경하는 방법은 사용 환경에 따라 상이한 내용이 많아서 상황에 맞는 port 변경 방법을 찾아서 적용해야 한다.

프로세스 강제 종료

Mac
// 현재 사용하고 있는 tomcat 프로세스 목록을 출력한다.
ps -ef | grep tomcat  

// 위 명령어를 통해 출력된 프로세스 목록의 특정 process_id를 입력하여 강제 종료시킨다.
kill -9 [process_id]  
Window
// 현재 사용하고 있는 8080 포트를 사용하는 네트워크 통계 정보를 출력한다.
netstat -ano | findstr 8080

// 위 명령어를 통해 출력된 목록의 process_id를 입력하여 강제 종료시킨다.
taskkill /F /pid [process_id]
Ubuntu/Linux
// 현재 사용하고 있는 8080 포트를 사용하는 네트워크 통계 정보를 출력하거나 톰캣 프로세스 목록을 출력한다.
netstat -lnp | grep 8080 or ps -ef | grep tomcat

// 위 명령어를 통해 출력된 목록의 process_id를 입력하여 강제 종료시킨다.
kill -9 [process_id]

프로세스 강제 종료 예시 (Mac)

ps -ef grep tomcat
kill -9 [PID]

만약 프로세스를 강제로 종료하는 방법을 써도 해결이 안 된다면 마지막으로는 컴퓨터 혹은 서버를 재부팅해보도록 하자. 가끔 단순히 컴퓨터터나 서버를 재시작하는 것만으로도 문제가 해결되곤 한다.

반응형

댓글

Designed by JB FACTORY