본문 바로가기

리눅스

웹 서버의 성능을 향상시키기 위한 커널 파라미터 튜닝하는 방법

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