🚀 대규모 트래픽을 위한 리눅스 커널 튜닝

 

많은 트래픽을 처리하기 위해 필수적인 리눅스 커널 파라미터들을 알아보겠습니다.

📌 주요 커널 파라미터 설정

1. 네트워크 연결 백로그 📥

# 연결 대기 큐 크기
net.core.somaxconn = 65535

# 새로운 연결 요청을 위한 백로그 큐
net.core.netdev_max_backlog = 65535

# SYN 패킷을 위한 백로그 큐
net.ipv4.tcp_max_syn_backlog = 65535

설명

  • somaxconn: 서버가 한번에 대기시킬 수 있는 연결 요청의 최대 개수
  • netdev_max_backlog: 네트워크 인터페이스가 처리할 수 있는 패킷 큐의 크기
  • tcp_max_syn_backlog: TCP SYN 요청을 대기시킬 수 있는 연결의 최대 개수

2. TIME_WAIT 상태 관리 ⏱️

# TIME_WAIT 상태 소켓 재사용
net.ipv4.tcp_tw_reuse = 1

# TIME_WAIT 상태의 최대 소켓 수
net.ipv4.tcp_max_tw_buckets = 1048576

설명

  • tcp_tw_reuse: TIME_WAIT 상태의 소켓을 새로운 연결에 재사용 (새로운 연결 생성 속도 향상)
  • tcp_max_tw_buckets: 시스템이 동시에 유지할 수 있는 TIME_WAIT 소켓의 최대 개수

3. 파일 디스크립터 제한 📂

# 시스템 전체 파일 디스크립터 제한
fs.file-max = 2097152

# 프로세스당 파일 디스크립터 제한 (/etc/security/limits.conf)
* soft nofile 1048576
* hard nofile 1048576

설명

  • 파일 디스크립터는 네트워크 소켓을 포함한 모든 파일 핸들을 의미
  • 대규모 트래픽 처리를 위해서는 높은 값으로 설정 필요

4. 포트 범위 설정 🔌

# 로컬 포트 범위 확장
net.ipv4.ip_local_port_range = 1024 65535

설명

  • 클라이언트 연결에 사용할 수 있는 포트 범위를 지정
  • 동시 연결 처리 능력 향상을 위해 넓은 범위로 설정

5. TCP 커넥션 튜닝 🔧

# TCP Keepalive 설정
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_keepalive_probes = 5
net.ipv4.tcp_keepalive_intvl = 15

# TCP Fast Open 활성화
net.ipv4.tcp_fastopen = 3

설명

  • tcp_keepalive_*: 비활성 연결 감지 및 정리를 위한 설정
  • tcp_fastopen: TCP 연결 설정 시간을 단축시키는 기능

6. SYN Flood 보호 🛡️

# SYN Flood 방어 활성화
net.ipv4.tcp_syncookies = 1

설명

  • SYN Flood 공격으로부터 서버를 보호
  • 대량의 동시 연결 요청에도 서버의 안정성 유지

🔍 모니터링 포인트

  1. 네트워크 연결 상태 📊
# 연결 상태 확인
netstat -n | awk '/^tcp/ {print $6}' | sort | uniq -c

# 백로그 큐 상태 확인
netstat -s | grep -i "listen"
  1. 시스템 리소스 사용량 💻
# 파일 디스크립터 사용량
lsof -n | wc -l

# 메모리 상태
free -m

⚡ 성능 최적화 팁

  1. 단계적 적용
  • 한 번에 모든 값을 변경하지 말고 점진적으로 조정
  • 각 변경 후 시스템 모니터링 필수
  1. 서버 특성 고려
  • 웹 서버, API 서버, DB 서버 등 용도에 따라 최적값이 다름
  • 하드웨어 리소스에 맞는 적절한 값 설정
  1. 주기적 재조정
  • 트래픽 패턴 변화에 따른 재조정
  • 시스템 업그레이드 시 재검토

✅ 적용 방법

  1. /etc/sysctl.conf 파일 수정
# 설정 파일에 파라미터 추가
sudo vi /etc/sysctl.conf

# 변경사항 적용
sudo sysctl -p
  1. 변경사항 확인
# 현재 설정값 확인
sysctl -a | grep [파라미터명]

🎯 결론

  • 높은 트래픽 처리를 위해서는 커널 튜닝이 필수적
  • 시스템 특성과 요구사항에 맞는 최적화가 중요
  • 지속적인 모니터링과 조정을 통한 성능 관리 필요

⚠️ 주의사항

  • 시스템 메모리 사용량을 고려하여 설정
  • 프로덕션 환경 적용 전 반드시 테스트 필요
  • 급격한 값 변경은 시스템 안정성에 영향을 줄 수 있음

 

728x90