728x90
웹 서버의 성능을 향상시키기 위한 커널 파라미터 튜닝하는 방법
웹 서버(Nginx + PHP-FPM)에서 더 많은 사용자 및 연결을 처리하기 위해 커널 파라미터를 튜닝하는 것은 중요한 과정입니다. 이로 인해 시스템의 성능이 향상되고 더 많은 동시 연결을 처리할 수 있게 됩니다.
1. TCP 스택 튜닝
- net.core.somaxconn : 대기 중인 연결 큐의 최대 크기를 설정합니다.
- net.core.netdev_max_backlog : 네트워크 장치에서 처리되지 않은 패킷의 최대 큐 길이를 설정합니다.
sysctl -w net.core.somaxconn=65535
sysctl -w net.core.netdev_max_backlog=65535
2. TCP 연결 설정 튜닝
- net.ipv4.tcp_max_syn_backlog : SYN 큐의 최대 길이를 설정하여 SYN 플러드 공격에 대비합니다.
- net.ipv4.tcp_tw_reuse 및 net.ipv4.tcp_tw_recycle : TIME-WAIT 상태의 TCP 연결 재활용을 조절합니다.
sysctl -w net.ipv4.tcp_max_syn_backlog=65535
sysctl -w net.ipv4.tcp_tw_reuse=1
sysctl -w net.ipv4.tcp_tw_recycle=1
3. 파일 디스크립터 및 프로세스 관련 튜닝
- fs.file-max : 시스템 전체에서 열 수 있는 파일 디스크립터의 최대 수를 설정합니다.
- vm.max_map_count : 프로세스가 할당할 수 있는 가상 메모리 맵의 최대 수를 설정합니다.
sysctl -w fs.file-max=65535
sysctl -w vm.max_map_count=262144
4. 메모리 관련 튜닝
- vm.swappiness : 스왑 사용량을 관리합니다. 웹 서버에서는 낮은 값으로 설정하여 스왑 사용을 최소화하는 것이 일반적입니다.
sysctl -w vm.swappiness=10
5. TCP 버퍼 사이즈 튜닝
- net.core.rmem_max, net.core.wmem_max, net.ipv4.tcp_rmem, net.ipv4.tcp_wmem 등을 통해 TCP 소켓의 수신 및 송신 버퍼 사이즈를 튜닝할 수 있습니다.
sysctl -w net.core.rmem_max=16777216
sysctl -w net.core.wmem_max=16777216
sysctl -w net.ipv4.tcp_rmem='4096 87380 16777216'
sysctl -w net.ipv4.tcp_wmem='4096 65536 16777216'
튜닝한 값을 영구적으로 적용하려면 /etc/sysctl.conf 파일에 설정을 추가하고 sysctl -p 명령을 사용하여 변경 사항을 적용하십시오.
커널 튜닝은 시스템의 특성에 따라 다르기 때문에 특히 실제 트래픽 패턴 및 하드웨어 사양을 고려하여 조정해야 합니다. 튜닝하기 전에 현재 시스템의 성능을 모니터링하고 테스트하여 변경 사항이 예상대로 작동하는지 확인하는 것이 좋습니다.
728x90
'리눅스' 카테고리의 다른 글
우분투에서 lsyncd를 사용하여 디렉토리 간에 변경 사항을 실시간으로 동기화하는 방법 (0) | 2023.12.01 |
---|---|
리눅스에서 ulimit을 설정하는 방법 (0) | 2023.11.30 |
[draft] lsattr 명령어와 chattr 명령어 (0) | 2023.11.30 |
rev 명령어 (0) | 2023.11.29 |
cut 명령어 (0) | 2023.11.29 |