tomcat Address already in use (Bind failed)

박영준·2024년 4월 12일
0

Troubleshooting

목록 보기
18/29

1. 발생한 문제

tomcat Address already in use (Bind failed)

추가
Caused by: org.jboss.netty.channel.ChannelException: Failed to bind to: 0.0.0.0/0.0.0.0:143
중략...
Caused by: java.net.BindException: 주소가 이미 사용 중입니다
중략...

2. 발생 원인

tomcat 기동 시, address 가 중복됨
즉, 8080포트를가 이미 사용 중인 것.

netstat -ano | grep 8080 로 8080포트를 사용중인 프로세스를 검색했을 때
이렇게 총 4개의 프로세스가 나타났다.

  [hso100@localhost bin]$ netstat -ano | grep 8080
  tcp6       3      0 :::8080                 :::*                    LISTEN      off (0.00/0/0)
  tcp6       1      0 192.168.111.135:8080    192.168.111.1:49819     CLOSE_WAIT  off (0.00/0/0)
  tcp6     466      0 192.168.111.135:8080    192.168.111.1:49816     CLOSE_WAIT  off (0.00/0/0)
  tcp6     531      0 192.168.111.135:8080    192.168.111.1:49815     CLOSE_WAIT  off (0.00/0/0)

이를 통해, 'tomcat Address already in use (Bind failed)' 에러가 나타난 이유를 알 수 있다

3. 해결법

  1. 해당 포트의 PID 를 검색
    [hso100@localhost bin]$ fuser -n tcp 8080
    8080/tcp:             6211

2. PID 종료 후 재확인
```python
[hso100@localhost bin]$ kill -9 6211
[hso100@localhost bin]$ netstat -ano | grep 8080

아무것도 뜨지 않으므로 8080포트를 가지는 6211 PID는 모두 정상적으로 종료되었다

  • kill 옵션

    • -9

      • linux 커널이 프로세스를 강제 종료함
      • 작업 중인 모든 데이터를 저장하지 않고, 프로세스를 종료
      • 따라서, 저장되지 않은 데이터들은 모두 소멸됨
    • -15

      • 작업 중인 데이터들을 안전하게 종료하는 절차를 진행
      • 메모리상에 있는 데이터, 설정, 환경 파일 등...을 안전하게 저장 후 프로세스 종료

참고: [tomcat] 리눅스에서 톰캣서버 강제종료, pid 못찾을 때 방법( port로 processId 찾기 )
참고: [Linux] 리눅스 kill -9 / kill -15

profile
개발자로 거듭나기!

0개의 댓글