여러 java 데몬을 띄워 테스트를 진행하던 중, 자바 데몬에서 특정 포트(40000)를 리스닝하기 위해 실행 중에 아래와 같은 에러가 발생하고 종료되었다.
java.net.BindException: Address already in use
netstat으로 보면, 40000으로 분명 리스닝하는 포트가 없었다. 하지만, TIME_WAIT 클라이언트 포트가 있었다. 즉,
curl로 es schema를 생성하면서 40000번 포트를 사용했다.
따라서, curl이 사용한 클라이언트 포트와 리스닝하려는 자바 데몬간의 충돌이 발생했다.
그렇다면, centos 6.7 기준으로 보면, curl이 사용한 포트 범위는 어떨까? sysctl 로 확인하면 클라이언트에서 사용할 수 있는 포트 범위는 32768부터 60999이다.
$ sysctl -A | grep local_port_range
net.ipv4.ip_local_port_range = 32768 60999
따라서, 리스닝하는 포트를 쓰려면 32767 이전 포트를 사용하는 게 가장 안전하다.
'unix and linux' 카테고리의 다른 글
쉘에서 proxy 설정 모음 (0) | 2016.12.22 |
---|---|
echo ?, * 파일 (0) | 2016.12.11 |
ssh를 이용해 리모트 서버에 파일이 존재하는지 확인하는 bash 스크립트 (0) | 2016.08.25 |
slab memory가 증가하는 현상 처리 - vfs_cache_pressure (0) | 2016.08.24 |
간단한 커보러스 명령어. - 티켓 생성, 확인, 삭제 (0) | 2016.08.22 |