스프링 부트 Port 8080 에러 netstat 명령어로 점유 프로세스 찾고 종료하는 1분 해결법
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
스프링 부트 Port 8080 에러 netstat 명령어로 점유 프로세스 찾고 종료하는 1분 해결법
스프링 부트(Spring Boot)를 기반으로 웹 애플리케이션을 개발하다 보면, 하루에도 몇 번씩 마주치게 되는 아주 성가신 상황이 있습니다. 바로 코드를 수정하고 서버를 재시작하려는 찰나, 콘솔 창에 붉은 글씨로 나타나는 "Port 8080 already in use"라는 에러 메시지입니다. 이는 개발자의 집중력을 흐트러뜨리고, 흐름을 끊어버리는 주범이기도 합니다. 특히 백엔드 개발 입문자나, 급하게 로직을 테스트해야 하는 상황에서는 이 단순한 포트 충돌 문제가 큰 스트레스로 다가올 수 있습니다.
이 문제는 단순히 서버가 두 번 실행되어서 발생하기도 하지만, IDE(통합 개발 환경)가 비정상적으로 종료되었거나, 이전 프로세스가 완전히 정리되지 않은 '좀비 프로세스' 상태로 남아있을 때 주로 발생합니다. 운영체제는 해당 포트(주로 8080)가 이미 다른 프로그램에 의해 점유되고 있다고 판단하여, 새로운 스프링 부트 애플리케이션의 실행을 막습니다. 이를 해결하기 위해서는 현재 해당 포트를 붙잡고 있는 프로세스 ID(PID)를 정확히 찾아내어 운영체제 수준에서 강제로 종료시켜야 합니다.
오늘은 윈도우(Windows)와 맥(Mac), 리눅스(Linux) 환경 각각에서 터미널 명령어를 통해 포트 충돌 문제를 가장 빠르고 정확하게 해결하는 방법을 상세하게 알아보겠습니다. 또한, 매번 명령어를 치는 것이 번거로운 분들을 위한 팁과, 스프링 부트 설정 자체를 변경하여 충돌을 피하는 노하우까지 백엔드 서버 장애 대응의 관점에서 깊이 있게 다뤄보도록 하겠습니다.
1. 포트 8080 충돌의 원인과 프로세스 점유 이해하기
해결 방법을 바로 적용하기 전에, 왜 이런 현상이 발생하는지 근본적인 원인을 이해하면 추후 같은 문제가 발생했을 때 훨씬 유연하게 대처할 수 있습니다. 컴퓨터 네트워크에서 '포트(Port)'는 운영체제 통신의 종단점을 의미하며, 0번부터 65535번까지의 번호를 가집니다. 그중 8080번 포트는 관습적으로 아파치 톰캣(Apache Tomcat)과 같은 웹 애플리케이션 서버(WAS)가 개발 환경에서 사용하는 기본 포트입니다.
TIME_WAIT 상태와 좀비 프로세스
우리가 인텔리제이(IntelliJ)나 이클립스(Eclipse)에서 정지 버튼을 눌러 서버를 껐음에도 불구하고, 운영체제 내부적으로는 해당 프로세스가 네트워크 연결을 정리하기 위해 TIME_WAIT 상태로 남아있거나, 혹은 비정상 종료로 인해 프로세스 자체가 사라지지 않고 메모리에 상주하는 경우가 있습니다. 이때 새로운 서버를 띄우려고 하면 OS는 "8080번 포트는 아직 사용 중이다"라고 판단하여 실행을 거부합니다.
이러한 상황은 특히 다음과 같은 경우에 자주 발생합니다.
- IDE가 멈추거나 강제로 종료된 후 다시 켰을 때
- 실수로 터미널과 IDE에서 동시에 서버를 실행했을 때
- 도커(Docker) 컨테이너가 백그라운드에서 이미 8080 포트를 점유하고 있을 때
- 마이크로서비스 아키텍처(MSA) 환경에서 여러 서비스를 동시에 띄우다가 포트 설정이 겹쳤을 때
전문가 팁: 단순히 에러를 해결하는 것을 넘어, 시스템 모니터링 관점에서는 이러한 현상이 얼마나 빈번한지 체크해보는 것이 좋습니다. 만약 정상적인 종료 절차를 밟았음에도 계속 포트가 점유되어 있다면, 애플리케이션의 종료 로직(Graceful Shutdown)에 문제가 있거나 데이터베이스 커넥션 풀이 제대로 닫히지 않는 버그가 있을 수 있습니다.
2. 윈도우(Windows) 환경에서 netstat으로 해결하는 완벽 가이드
윈도우 운영체제를 사용하는 개발자라면 CMD(명령 프롬프트)나 PowerShell을 이용하여 이 문제를 해결할 수 있습니다. 가장 핵심이 되는 명령어는 netstat입니다. 이는 Network Statistics의 약자로, 현재 컴퓨터의 네트워크 연결 상태, 라우팅 테이블, 인터페이스 통계 등을 보여주는 강력한 도구입니다.
Step 1: 포트를 점유한 PID 찾기 (netstat -ano)
먼저 어떤 프로세스가 8080 포트를 잡고 있는지 식별해야 합니다. 윈도우 검색창에 'cmd'를 입력하여 명령 프롬프트를 실행합니다. (관리자 권한으로 실행하면 더 확실하게 제어할 수 있습니다). 그리고 다음 명령어를 입력합니다.
netstat -ano | findstr :8080
이 명령어의 각 옵션이 의미하는 바는 다음과 같습니다:
아래 링크를 통해 구매 시 운영자에게 일정 수수료가 발생할 수 있습니다.
'스프링 부트 실행 시 Port 8080 already in use 에러 뜰 때 netstat 명령어로 포트 점유 프로세스 찾고 종료하는 법' 관련 상품을 쿠팡에서 확인해 보세요.
상품 보러가기 →- 공유 링크 만들기
- X
- 이메일
- 기타 앱
댓글
댓글 쓰기