가수면

포트가 사용 중이 아님에도 'Web server failed to start. Port 8080 was already in use.' 에러가 뜨는 경우 본문

일지

포트가 사용 중이 아님에도 'Web server failed to start. Port 8080 was already in use.' 에러가 뜨는 경우

니비앙 2023. 12. 28. 16:03

스프링 부트를 이용해 서버를 실행했을 때 Web server failed to start. Port 8080 was already in use.라는 오류가 발생하며 서버가 실행되지 않는 문제가 발생했다.

 

별도로 실행시킨 것이 없는데 이랬던 경우 재부팅해서 몇 번 해결한 경험이 있었기에 재부팅을 해봤지만 이번에는 해결되지 않았다.

 

포트를 바꿔 실행하면 되겠지만, 언제까지고 그렇게 작업을 해갈 수는 없는 노릇이다.

 

오류를 해결하기 위해 검색을 통해 몇 가지 방법을 시도해봤다.

이 글을 통해 일반적인 해결 방법과 내가 해결한 방법을 정리한다.

'Web server failed to start. Port 8080 was already in use.'가 뜨는 경우 일반적인 해결 방법.

1. 실행 포트 변경

application.properties 파일에 아래처럼 설정해 실행되는 포트를 지정할 수 있다.

// application.properties

server.port=8081

 

2. 실행 중인 8080 포트 종료

Windows

명령 프롬프트에서 netstat -ano 혹은 netstat -ano | findstr :8080을 입력 후, 해당 포트를 사용하는 프로세스 ID를 찾아 taskkill /PID [프로세스ID] /F 명령어로 포트를 종료한다.

Linux/Mac

터미널에서 lsof -i :8080 또는 netstat -tulnp | grep 8080를 입력 후, 해당 포트를 사용하는 프로세스 ID를 찾아 kill -9 [프로세스ID] 명령어로 포트를 종료한다.

 

3. 실행 중인 서버가 있다면 종료

작업 중이던 다른 서버를 깜빡하고 끄지 않은 채 실행시켜 놓은 상태일지도 모른다.

이 경우 IDE에서 'Terminate/Disconnect All'을 실행하거나 실행 중인 프로세스에서 'java'나 'javaw'같은 이름을 가진 프로세스를 찾아 종료시킨다.

 

4. 방화벽 설정 확인

방화벽에서 인바운드 규칙과 아웃바인드 규칙을 확인해 8080에 대한 설정이 되어있는지 확인해 수정한다.

위 방법에 전부 해봐도 안 될 경우

내 경우가 그랬다. 실행 중인 8080 포트도 없었고, 방화벽 설정이 막고 있는 것도 아니었고, 실행 중인 다른 서버도 없었다.

 

이에 재부팅을 했음에도 여전히 8080포트가 실행 중이라는 얘기는 곧, 윈도우 실행 시 실행되는 시작 프로그램 중 하나가 문제를 발생시키고 있을 가능성이 높겠다는 판단이 들어 시작 프로그램을 전부 '사용 안함'으로 수정했더니 서버가 실행되기 시작했다.

 

이후 바꾸기 전의 초기 상태와 스냅샷 비교를 통해 문제가 되는 프로그램을 하나씩 확인해보려 했으나, 소거 방식을 거쳐 초기 상태가 되었음에도 문제 없이 실행되어 안타깝게도 원인이었던 프로그램은 찾지 못했다...

Comments