스프링으로 개발을 진행하다보면 필연적으로 다음과 같은 에러를 마주하게 됩니다. 저 또한 주기적으로 해당 에러를 마주치는데 이에 대한 해결 방법을 정리해보고자 합니다.
원인으로는 크게 두 가지가 있습니다.
첫 번째로 다른 프로세스가 이미 동일한 포트 번호를 사용하고 있는 경우 웹 서버는 해당 포트를 사용할 수 없습니다. 이 경우에는 다른 포트를 시도하거나, 이미 실행중인 프로세스를 종료해야 합니다.
두 번째로 이전에 실행 중인 웹 서버 프로세스가 제대로 종료되지 않은 경우 발생합니다. 저 또한 다음과 같은 이유로 해당 오류를 자주 접했는데요, 이전에 실행된 웹 서버 프로세스가 제대로 종료되지 않은 상태일 경우 해당 프로세스가 계속해서 포트 번호를 점유하고 있을 수 있습니다. 이 또한 정상적으로 실행중인 프로세스를 종료하거나 시스템을 다시 시작하여 포트를 해제할 수 있습니다.
우선 이미 실행 중인 포트를 강제 종료 해야 합니다. 해당 포트 번호를 사용하고 있는 프로세스 정보는 다음 명령어를 통해 불러옵니다.
lsof -i tcp:[Port #]
제 경우에는 8080 포트가 충돌이 났으니, Port # 에 8080을 넣어 명령어를 실행해보았습니다. (대괄호는 제거하고 포트번호만 입력하시면 됩니다)
명령어를 입력하면 다음과 같은 정보가 도출되는데 이 중 PID 번호를 기억해야 합니다. PID 번호를 이용하여 다음 명령어를 입력합니다.
sudo kill -9 [PID #]
비밀번호를 입력하고나면 정상적으로 포트 충돌이 해결된 모습을 확인할 수 있습니다.