많은 트래픽을 처리하기 위해 필수적인 리눅스 커널 파라미터들을 알아보겠습니다.
📌 주요 커널 파라미터 설정
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 공격으로부터 서버를 보호
- 대량의 동시 연결 요청에도 서버의 안정성 유지
🔍 모니터링 포인트
- 네트워크 연결 상태 📊
# 연결 상태 확인
netstat -n | awk '/^tcp/ {print $6}' | sort | uniq -c
# 백로그 큐 상태 확인
netstat -s | grep -i "listen"
- 시스템 리소스 사용량 💻
# 파일 디스크립터 사용량
lsof -n | wc -l
# 메모리 상태
free -m
⚡ 성능 최적화 팁
- 단계적 적용
- 한 번에 모든 값을 변경하지 말고 점진적으로 조정
- 각 변경 후 시스템 모니터링 필수
- 서버 특성 고려
- 웹 서버, API 서버, DB 서버 등 용도에 따라 최적값이 다름
- 하드웨어 리소스에 맞는 적절한 값 설정
- 주기적 재조정
- 트래픽 패턴 변화에 따른 재조정
- 시스템 업그레이드 시 재검토
✅ 적용 방법
- /etc/sysctl.conf 파일 수정
# 설정 파일에 파라미터 추가
sudo vi /etc/sysctl.conf
# 변경사항 적용
sudo sysctl -p
- 변경사항 확인
# 현재 설정값 확인
sysctl -a | grep [파라미터명]
🎯 결론
- 높은 트래픽 처리를 위해서는 커널 튜닝이 필수적
- 시스템 특성과 요구사항에 맞는 최적화가 중요
- 지속적인 모니터링과 조정을 통한 성능 관리 필요
⚠️ 주의사항
- 시스템 메모리 사용량을 고려하여 설정
- 프로덕션 환경 적용 전 반드시 테스트 필요
- 급격한 값 변경은 시스템 안정성에 영향을 줄 수 있음
728x90
'IT' 카테고리의 다른 글
크롬 오류: ERR_BLOCKED_BY_CLIENT 문제 해결 가이드 📚 (0) | 2024.11.01 |
---|---|
웹사이트 접속 실패 403 Forbidden 오류 해결 방법 🛠️ (2) | 2024.11.01 |
[Windows] "로컬 장치 이름이 이미 사용중입니다" 오류 해결 방법 🌐 (0) | 2024.11.01 |
🐧 리눅스 파일 시스템 구조 완벽 가이드 (0) | 2024.10.31 |
[메신저봇R] 카카오톡 ChatGPT 챗봇 만들기 (코드 설명) (0) | 2024.10.30 |