[Ubuntu]Linux Tunning -네트워크 커널 매개 변수 최적화
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(분산 서비스 거부) 공격에 노출될 수 있습니다.