InfraPlatform

[Ubuntu]Linux Tunning -네트워크 커널 매개 변수 최적화

IT오이시이 2024. 3. 6. 00:26
728x90

 

Linux Tunning -네트워크 커널 매개 변수 최적화

 

대량의 네트웍 처리를 위해 커널 파라미터를 튜닝하는 경우 자주 사용하는 환경을 정리하였습니다.

/etc/sysctl.conf 파일을 작성하여 시스템 재부팅시 커널이 옵티마이징 되도록 합니다.

# 네트웍 관련 커널 파라미터를 수정합니다.

$ sudo vi /etc/sysctl.conf

net.core.somaxconn = 4086
net.core.netdev_max_backlog = 5000

net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_wmem = 4096 12582912 16777216
net.ipv4.tcp_rmem = 4096 12582912 16777216

net.ipv4.tcp_max_syn_backlog = 8096
net.ipv4.tcp_slow_start_after_idle = 0
net.ipv4.tcp_tw_reuse = 1
net.ipv4.ip_local_port_range = 10240 65535


# 설정된 환경을 커널에 적용하여 로딩합니다.
$ sudo sysctl -p

 

 

1) net.core.somaxconn:
  - 
이 파라미터는 서버 소켓의 최대 연결 대기열 크기를 설정합니다. 여기서는 4086으로 설정되어 있습니다. 이 값은 시스템의 특성에 따라 조정할 수 있습니다.


2) net.core.netdev_max_backlog:
  -  네트워크 장치의 최대 패킷 대기열 크기를 설정합니다. 이 값은 5000으로 설정되어 있습니다.


3) net.core.rmem_max와 net.core.wmem_max:
  -  수신 및 송신 버퍼의 최대 크기를 설정합니다. 여기서는 16777216로 설정되어 있습니다.

4) net.ipv4.tcp_wmem과 net.ipv4.tcp_rmem:
  -  TCP 소켓의 수신 및 송신 버퍼 크기를 설정합니다. 여기서는 각각 4096, 12582912, 16777216으로 설정되어 있습니다.

5) net.ipv4.tcp_max_syn_backlog:
  -  SYN 패킷의 최대 대기열 크기를 설정합니다. SYN 공격에 대비하여 설정할 수 있습니다.

6) net.ipv4.tcp_slow_start_after_idle:
TCP 연결이 idle 상태에서 다시 시작할 때 slow start를 사용할지 여부를 설정합니다. 여기서는 0으로 설정되어 있어 slow start를 사용하지 않습니다.

7) net.ipv4.tcp_tw_reuse:
  - TIME_WAIT 상태의 소켓을 재사용할지 여부를 설정합니다. 여기서는 1로 설정되어 있어 재사용합니다.

8) net.ipv4.ip_local_port_range:
  -  로컬 포트 범위를 설정합니다. 여기서는 10240부터 65535까지의 범위로 설정되어 있습니다

 


net.ipv4.tcp_tw_reuse 활용의 장단점


net.ipv4.tcp_tw_reuse는 TIME_WAIT 상태의 소켓을 재사용하는 기능을 활성화합니다. 이에 따른 장단점은 다음과 같습니다

 

장점 (Pros) 단점 (Cons)
리소스 절약 (Resource Saving) 손상된 연결 문제 (Potential for Damaged Connections)
연결 지연 감소 (Reduced Connection Delay) 정확한 연결 추적의 어려움 (Difficulty in Accurate Tracking)
  호환성 문제 (Compatibility Issues)

 

장점:

1) 리소스 절약: TIME_WAIT 상태의 소켓을 빠르게 재사용하므로, 시스템 자원을 효율적으로 사용할 수 있습니다.

2) 연결 지연 감소: 새로운 연결을 수립할 때 TIME_WAIT 상태를 기다리지 않고 빠르게 재사용하므로, 연결 지연이 감소할 수 있습니다.


단점:

1) 손상된 연결 문제: TIME_WAIT 상태의 목적은 네트워크 상에서 손상된 패킷이나 연결에 대한 충돌을 방지하는 것입니다. tcp_tw_reuse를 사용하면 이러한 안전장치를 우회하게 되어, 손상된 연결에 민감해질 수 있습니다.

2) 정확한 연결 추적의 어려움: 재사용된 소켓은 기존 연결과 관련이 있을 수 있으므로, 정확한 연결 추적 및 디버깅이 어려워질 수 있습니다.

3) 호환성 문제: 모든 네트워크 환경이나 응용 프로그램에서 tcp_tw_reuse를 지원하지 않을 수 있습니다. 따라서 호환성 문제에 주의해야 합니다.

이러한 장단점을 고려하여, net.ipv4.tcp_tw_reuse를 사용할지 여부를 결정해야 합니다. 네트워크 환경과 응용 프로그램의 특성에 따라 적절한 선택이 필요합니다.

 


 

net.ipv4.tcp_max_syn_backlog 사용의 장.단점

 

장점 (Pros) 단점 (Cons)
연결 대기열 크기 조절 (Adjustable Connection Queue Size) 자원 소모 (Resource Consumption)
서비스의 동시처리 안정성 향상 (Improved Service Stability) 서비스 연결 지연 증가 (Increased Latency)
  취약점 공격 가능성 (Vulnerability to DDoS Attacks)

 

장점:

1) 연결 대기열 크기 조절: tcp_max_syn_backlog을 통해 TCP 연결 요청을 대기시키는 큐의 크기를 조절할 수 있습니다. 큐의 크기를 적절하게 조절하면 시스템이 동시에 처리할 수 있는 연결 요청 수를 조절할 수 있습니다.

2) 서비스의 동시처리 안정성 향상: 적절한 대기열 크기를 유지함으로써, 서버가 동시에 처리할 수 있는 연결 요청을 초과하는 경우에도 서비스의 안정성을 향상시킬 수 있습니다.

단점:

1) 자원 소모: 큰 대기열 크기는 메모리와 프로세스 자원을 소모할 수 있습니다. 따라서 과도한 크기의 대기열은 자원 부족 현상을 유발할 수 있습니다.

2) 서비스 연결 지연 증가: 대기열 크기가 크면서 서버에 도달하는 연결 요청 수가 증가하면, 일부 연결이 대기열에서 대기할 수 있어 지연이 발생할 수 있습니다.

3) 취약점 공격 가능성: 큰 대기열을 가진 서버는 과도한 연결 요청으로 인한 취약점을 악용할 수 있는 DDoS(분산 서비스 거부) 공격에 노출될 수 있습니다.

728x90
반응형