>  기사  >  운영 및 유지보수  >  Nginx 높은 동시성 커널을 최적화하는 방법

Nginx 높은 동시성 커널을 최적화하는 방법

WBOY
WBOY앞으로
2023-05-15 17:52:061026검색

높은 동시성이란 무엇입니까?

  • 기본 Linux 커널 매개변수는 가장 일반적인 시나리오를 고려하며 높은 동시 액세스를 지원하는 웹 서버에는 적합하지 않으므로 nginx가 가질 수 있도록 Linux 커널 매개변수를 수정해야 합니다.

  • 커널을 최적화할 때 수행할 수 있는 작업은 많습니다. 그러나 일반적으로 nginx를 정적 웹 콘텐츠 서버, 역방향 프록시 또는 제공하는 서버로 사용하는 경우에는 조정을 수행합니다. 압축 서버의 경우 커널 매개변수 조정이 다를 것으로 예상됩니다. 다음은 nginx가 더 많은 동시 요청을 지원할 수 있도록 하는 가장 일반적인 TCP 네트워크 매개변수의 간단한 구성입니다. 이를 위해서는 /etc/sysctl.conf를 수정해야 합니다. 커널 매개변수를 변경합니다.

  • 구성 방법


구성 상세 분석

#단일 프로세스에서 열 수 있는 최대 핸들 수를 나타냅니다.

fs.file-max = 999999
#매개변수는 1로 설정되어 소켓이 time_wait 상태는 새로운 TCP 링크에 재사용될 수 있습니다. 이는 서버에 매우 중요합니다. 왜냐하면 time_wait 상태에는 항상 많은 수의 링크가 있기 때문입니다.

net.ipv4.tcp_tw_reuse = 1

# Keepalive가 시작되면 TCP가 Keepalive를 전송하는 빈도가 증가합니다. 메시지; 기본값은 2시간이며 10분으로 설정하면 잘못된 링크를 더 빨리 정리할 수 있습니다.

ner.ipv4.tcp_keepalive_time = 600

#서버가 링크를 적극적으로 닫을 때 소켓이 fin_wait_2 상태로 유지되는 최대 시간

net.ipv4.tcp_fin_timeout = 30

#이 매개변수는 운영 체제에서 허용하는 최대 time_wait 소켓 수를 나타냅니다. 이 숫자를 초과하면 time_wait 소켓이 작동합니다. 즉시 지워지고 경고 메시지가 인쇄됩니다.

#이 매개변수의 기본값은 180000입니다. 과도한 time_wait 소켓은 웹 서버 속도를 저하시킵니다.

net.ipv4.tcp_max_tw_buckets = 5000

#udp 및 tcp 링크에 대한 로컬 포트의 값 범위를 정의합니다.

net.ipv4.ip_local_port_range = 1024 65000

# tcp가 캐시를 허용하는 최소값, 기본값, 최대값을 정의합니다.

net.ipv4.tcp_rmem = 10240 87380 12582912

#TCP 전송 캐시의 최소값, 기본값, 최대값을 정의합니다.

net.ipv4.tcp_wmem = 10240 87380 12582912

#네트워크 카드가 커널 처리 속도보다 빠른 데이터 패킷을 수신하면 이러한 데이터 패킷을 저장하기 위한 대기열이 발생합니다. 이 매개변수는 대기열의 최대값을 나타냅니다.

net.core.netdev_max_backlog = 8096

#커널 소켓이 기본 버퍼 크기를 허용함을 나타냅니다.

net.core.rmem_default = 6291456

#은 커널 소켓 전송 버퍼의 기본 크기를 나타냅니다.

net.core.wmem_default = 6291456

# 커널 소켓이 더 큰 버퍼 크기를 허용함을 나타냅니다.

net.core.rmem_max = 12582912

#은 커널 소켓 전송 버퍼의 크기가 더 크다는 것을 나타냅니다.

net.core.wmem_max = 12582912

참고: 위의 네 가지 구성은 비즈니스 논리와 실제 하드웨어 비용을 기반으로 종합적으로 고려해야 합니다.

# 성능과는 아무런 관련이 없습니다. tcp syn***을 해결하는 데 사용됩니다.

net.ipv4.tcp_syncookies = 1

#이 매개변수는 TCP 3방향 핸드셰이크 설정 단계에서 허용되는 syn 요청 대기열의 최대 길이를 나타냅니다. 기본값은 1024입니다. 이 값을 더 크게 설정하면 nginx가 너무 바빠서 새 연결을 수락할 수 없을 때 Linux가 클라이언트 시작을 잃는 것을 방지할 수 있습니다. .링크요청합니다.

net.ipv4.tcp_max_syn_backlog = 8192

#이 매개변수는 timewait 빠른 재활용을 설정하고 활성화하는 데 사용됩니다.

net.ipv4.tcp_tw_recycle = 1

옵션의 기본값은 128입니다. 이 매개 변수는 시스템에서 동시에 시작하는 TCP 연결 수를 조정하는 데 사용됩니다. 동시성이 높은 요청에서는 기본값으로 인해 링크 시간 초과 또는 재전송이 발생할 수 있습니다. 이 값은 동시성 요청 수와 함께 조정되어야 합니다.

net.core.somaxconn=262114

# 옵션은 사용자 파일 핸들과 연결되지 않은 시스템의 최대 TCP 소켓 수를 설정하는 데 사용됩니다. 이 숫자를 초과하면 고아 링크가 즉시 재설정되고 경고 메시지가 출력됩니다. 이 제한은 단순한 dos***를 방지하기 위해 이 제한에 너무 많이 의존할 필요가 없거나 이 값을 줄일 필요가 없음을 나타냅니다.

net.ipv4.tcp_max_orphans=262114

사용하기 쉽도록 아래에 직접 복사하시면 됩니다

net.ipv4.tcp_tw_reuse = 1
fs.file-max = 999999
net.ipv4.tcp_fin_timeout = 30
ner.ipv4.tcp_keepalive_time = 600

위 내용은 Nginx 높은 동시성 커널을 최적화하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제