새소식

반응형
Linux

[Server] ip_local_port_range , tcp_tw_recycle, tcp_tw_reuse

  • -
반응형

api-gateway와 같이 많은 요청이 들어오는 서버에 keep-alive와 같은 설정이 없는 경우에는 tcp connection이 부족할 수 도 있을 거라는 생각이 들었다.

이러한 상황을 방지하기 위해서 할 수 있는 서버 설정으로 어떤 것이 있는지 알아보자.

 

net.ipv4.ip_local_port_range

$  cat /proc/sys/net/ipv4/ip_local_port_range
32768   61000

$ sysctl net.ipv4.ip_local_port_range
net.ipv4.ip_local_port_range = 32768    61000

로컬 포트 바인딩 할 수 있는 범위

로컬 포트가 부족하다면 해당 범위를 늘릴 수 있다.

 

net.ipv4.tcp_tw_reuse

$ sysctl -w ipv4.tcp_timestamps="1"
$ sysctl -w net.ipv4.tcp_tw_reuse="1"

사용할 수 있는 local port 수가 모자라면, 

현재 TIME_WAIT 상태의 소켓 중 프로토콜상 사용해도 무방해 보이는 소켓을 재사용

!! TW_REUSE 옵션은 통신을 하는 양측 모두 TCP timestamp 옵션이 설정되어 있어야 활성화 !!

 

net.ipv4.tcp_tw_recycle

$ sysctl -w ipv4.tcp_timestamps="1"
$ sysctl -w net.ipv4.tcp_tw_reuse="1"
$ sysctl -w net.ipv4.tcp_tw_recycle="1"

TIME_WAIT 상태에 머무르는 시간을 변경하여 TIME_WAIT 상태의 소켓 수를 줄이는 옵션 

1분(TIME_WAIT 상태에 머무르는 시간) 대신 RTO(Retransmission Timeout) 시간만큼으로 TIME_WAIT 상태에 머무르는 시간이 경감(최소 RTO 200ms)

 

다만, TW_RECYCLE은 크게 권장하지 않는다. 

일부 클라이언트로부터의 SYN 패킷이 유실될 수 있다.(TIME_WAIT 상태에 머무르는 시간이 짧게 유지되므로)

즉, TW_RECYCLE 사용 시 일부 TCP 연결 요청은 실패하게 된다.

반응형

'Linux' 카테고리의 다른 글

[Server] netstat 명령어 - 네트워크 통계 정보  (0) 2024.05.04
[Server] Load Average란  (0) 2022.11.21
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.