반응형
네트워크 성능 튜닝
1. 현재 설정 확인하기
네트워크 디바이스 백로그 확인
sudo sysctl net.core.netdev_max_backlog
소켓 연결 대기열 크기 확인
sudo sysctl net.core.somaxconn
TCP SYN 백로그 크기 확인
sudo sysctl net.ipv4.tcp_max_syn_backlog
2. 즉시 적용(시스템 재시작 전까지 유효)
sudo sysctl -w net.core.netdev_max_backlog=250000
sudo sysctl -w net.core.somaxconn=4096
sudo sysctl -w net.ipv4.tcp_max_syn_backlog=8192
3. 영구 적용 (재시작 후에도 유지)
설정 파일 생성
sudo tee /etc/sysctl.d/99-net-tuning.conf <<'EOF'
# 네트워크 디바이스 패킷 백로그 (기본값: 1000)
net.core.netdev_max_backlog = 250000
# TCP 소켓 수신 대기열 크기 (기본값: 4096*)
net.core.somaxconn = 4096
# TCP SYN 연결 요청 대기열 (기본값: 1024)
net.ipv4.tcp_max_syn_backlog = 8192
EOF
변경사항 적용
sudo sysctl -p /etc/sysctl.d/99-net-tuning.conf
4. 추가 추천 파라미터
추가 성능 향상을 위한 설정
sudo tee -a /etc/sysctl.d/99-net-tuning.conf <<'EOF'
# TIME-WAIT 소켓 재사용 (고부하 서버에 적합)
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 0 # 주의: Linux 4.12+에서는 제거됨
# TCP 버퍼 크기 조정
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
# 연결 추적 테이블 크기 증가
net.netfilter.nf_conntrack_max = 262144
EOF
5. 적용 확인 및 모니터링
적용 확인
sudo sysctl -a | grep -E "netdev_max_backlog|somaxconn|tcp_max_syn"
모니터링 명령어
- 현재 소켓 상태 확인
ss -lnt
- 누락된 연결 확인
netstat -s | grep -i listen
우분투 24.04에서 Nginx 1.28 + PHP-FPM 8.3으로 운영하는 고성능 웹 서버에 적합한 설정
더보기
---
vim /etc/sysctl.d/99-web.conf
# /etc/sysctl.d/99-web.conf
# -------------------------------------------------
# 네트워크 성능 최적화 (고트래픽 연결 처리 향상)
# -------------------------------------------------
net.core.somaxconn = 4096 # listen() 백로그 큐 크기 증가
net.ipv4.tcp_max_syn_backlog = 4096 # SYN 큐 크기 증가 (연결 스파이크 방지)
net.core.netdev_max_backlog = 5000 # 네트워크 디바이스 큐 크기
net.core.rmem_max = 16777216 # TCP 수신 버퍼 최대 (16MB)
net.core.wmem_max = 16777216 # TCP 송신 버퍼 최대 (16MB)
net.ipv4.tcp_rmem = 4096 87380 16777216 # min / default / max 수신 버퍼
net.ipv4.tcp_wmem = 4096 87380 16777216 # min / default / max 송신 버퍼
net.ipv4.tcp_window_scaling = 1 # 윈도우 스케일링 활성화
net.ipv4.tcp_slow_start_after_idle = 0 # 아이들 후 slow start 비활성화
net.ipv4.tcp_tw_reuse = 1 # TIME-WAIT 소켓 재사용 (포트 고갈 방지)
net.ipv4.tcp_fin_timeout = 15 # TIME-WAIT 상태 지속 시간 단축
net.ipv4.tcp_keepalive_time = 300 # Keepalive 프로브 시작 시간
net.ipv4.tcp_keepalive_intvl = 60
net.ipv4.tcp_keepalive_probes = 5
# BBR 혼잡 제어 알고리즘 사용 (대역폭 활용 극대화)
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
# TCP Fast Open 활성화 (연결 설정 지연 감소)
net.ipv4.tcp_fastopen = 3
# -------------------------------------------------
# 메모리 관리 최적화 (스왑 최소화, OOM 방지)
# -------------------------------------------------
vm.swappiness = 10 # 스왑 사용 최소화 (RAM 우선 사용)
vm.overcommit_memory = 1 # 메모리 초과 할당 허용 (PHP-FPM 안정성)
vm.dirty_ratio = 15 # 더티 페이지 비율 (파일 시스템 I/O 부하 조절)
vm.dirty_background_ratio = 5
vm.dirty_expire_centisecs = 1500 # 더티 데이터 만료 시간 (15초)
vm.dirty_writeback_centisecs = 500 # 백그라운드 쓰기 주기 (5초)
# -------------------------------------------------
# 파일 디스크립터 및 리소스 한계 증가
# -------------------------------------------------
fs.file-max = 2097152 # 시스템 전체 최대 파일 디스크립터
fs.inotify.max_user_watches = 524288 # 파일 감시 한계 (Nginx 재로드 등에 유용)
# -------------------------------------------------
# 기타 안정성 옵션
# -------------------------------------------------
net.ipv4.tcp_syncookies = 1 # SYN flood 공격 방어
net.ipv4.ip_local_port_range = 1024 65535 # 사용 가능한 임시 포트 범위 확대
---
728x90
반응형
'리눅스' 카테고리의 다른 글
| 우분투 22.04에서 PXE 네트워크 부팅 서버를 구성하는 방법 (0) | 2025.12.20 |
|---|---|
| macOS에서 ISO 이미지를 USB 부팅 디스크로 생성하는 방법 (1) | 2025.12.17 |
| 우분투 24.04에서 TFTP 서버를 구축하는 방법 (0) | 2025.12.16 |
| 우분투 24.04에서 PXE 자동 설치 서버를 구축하는 방법 (0) | 2025.12.15 |
| Nginx 환경에서 WordPress 설치하는 방법 (0) | 2025.12.15 |