nginx 성능 최적화 및 커 널 파라미터 조정
7882 단어 링크 ux 운영
Nginx 는 고성능 웹 서버 로 서 설정 파 라 메 터 를 특별히 조정 하지 않 아 도 대량의 병행 요청 을 처리 할 수 있 습 니 다.아래 의 설정 매개 변 수 는 인터넷 의 일부 변조 매개 변 수 를 참고 하 는 것 으로 참고 로 서 당신 의 온라인 업무 에 적합 하지 않 습 니 다.
worker 프로 세 스
worker_processes
, CPU , CPU 。
worker_rlimit_nofile
Nginx , , 102400。
ulimit -n 102400 。
/etc/security/limits.conf
:
#* soft nofile 655350 ( #)
#* hard nofile 655350 ( #)
worker_connections
Nginx worker , Nginx
(worker_processes * worker_connections), 10240, 。
http 와 tcp 연결
use epoll
epoll , Linux 。
multi_accept on
worker 。
sendfile on
FD , user mode kernel mode , 。
tcp_nopush on
tcp_nopush on , tcp_cork 。
: , , , 。
tcp_nodelay on
data-sends( Nagle ), 。
( Nagle )
【 , 1 , IPv4 , 40 ,
, 41 , 1 。
, Nagle 。
: MSS, , , 。
, , 。】
keepalive_timeout
, 30s, , , 。
keepalive_requests
, , , 50000.
reset_timeout_connection on
on , , 。
client_body_timeout
body , , , 60, 10。
send_timeout
, Nginx , 。
send_timeout , Nginx 。 , 3。
buffer 와 cache (아래 설정 은 하나의 요청 에 대한 것 입 니 다)
client_body_buffer_size
POST , client_body_buffer , buffer , 128k。
client_max_body_size
HTTP body , Content-Length ,client_max_body_size Content-Length 。
body Nginx HTTP , 。 413 。
, 1GB ,Nginx , Content-Length client_max_body_size ,
413(Request Entity Too Large) 。
0, , 10m。
client_header_buffer_size
header buffer , 4k。
large_client_header_buffers
header( client_header_buffer_size) buffer, , , buffer 。
4 8k
open_file_cache
:
;
;
( )。
:open_file_cache max=size inactive=time;
max ,inactive 。
open_file_cache max=102400 inactive=20s;
open_file_cache_valid
。 30s。
open_file_cache_min_uses
open_file_cache inactive ,
, 1, , inactive , 。
2。
압축 하 다.
순수한 텍스트 의 내용 에 대해 Nginx 는 gzip 로 압축 할 수 있 습 니 다.압축 기술 을 사용 하면 대역 폭 에 대한 소 모 를 줄 일 수 있다.ngxhttp_gzip_모듈 모듈 지원
설정 은 다음 과 같 습 니 다: gzip on; /gzip 기능 오픈 gzipmin_length 1024; //요청 자원 이 이 수 치 를 초과 하여 압축 할 수 있 도록 설정, 단위 바이트 gzipbuffers 16 8k; //압축 에 사용 할 buffer 크기 를 설정 합 니 다. 첫 번 째 숫자 는 수량 이 고 두 번 째 숫자 는 각각 buffer 의 크기 gzip 입 니 다.comp_level 6; //압축 레벨 설정, 범위 1 - 9, 9 압축 레벨 이 가장 높 고 CPU 자원 gzip 소모types text/plain application/x-javascript text/css application/xml image/jpeg image/gif image/png; //어떤 종류의 파일 을 압축 해 야 하 는 지 지정 gzipdisable "MSIE 6."; //IE6 브 라 우 저 는 압축 을 사용 하지 않 습 니 다.
테스트: curl - I - H "Accept - Encoding: gzip, deflate"http://www.aminglinux.com/1.css
로그
, crit , 。
, , ,
정적 파일 만 료
정적 파일 에 대해 만 료 시간 을 설정 해 야 합 니 다. 그러면 이 자원 을 클 라 이언 트 브 라 우 저 에 캐 시 할 수 있 습 니 다. 캐 시가 효력 을 잃 지 않 기 전에 클 라 이언 트 는 서비스 기간 에 같은 자원 을 요청 하지 않 고 대역 폭 과 자원 소 모 를 절약 할 수 있 습 니 다.
설정 예 는 다음 과 같 습 니 다: location ~ * ^. +. (gif | jpg | png | css | js) ${expires 1d; / 1d 는 하루 를 표시 하고 24h 로 하루 를 표시 할 수 있 습 니 다.}
프 록 시 서버 로
Nginx 는 대부분 대리 나 부하 균형 을 이 루 는 역할 을 한다.앞에서 설명 한 인자 의 의 미 는 http {proxy cache path / data / nginx cache / levels = 1: 2 keys zone = my zone: 10 m inactive = 300 s max size = 5g; server{proxy_buffering on;proxy_buffer_size 4k;proxy_buffers 2 4k;proxy_busy_buffers_size 4k;proxy_temp_path /tmp/nginx_proxy_tmp 1 2;proxy_max_temp_file_size 20M;proxy_temp_file_write_size 8k;
location /
{
proxy_cache my_zone;
...;
}
}
}
SSL 최적화
worker_processes , ssl CPU 。
, ssl , ( 、 )
ssl , “ ” 。
ssl_session_cache shared:SSL:10m; // 10M
ssl_session_timeout 10m; // 10
Linux 커 널 파라미터 조정
고성능 WEB 서버 로 서 Nginx 자체 의 매개 변수 만 조정 해 서 는 안 됩 니 다. Nginx 서 비 스 는 고성능 운영 체제 에 의존 하기 때 문 입 니 다. 다음은 흔히 볼 수 있 는 몇 개의 Linux 커 널 매개 변수 최적화 방법 입 니 다.
net.ipv4.tcp_max_tw_buckets
tcp , timewait, , , timewait 。
, , , , 。
net.ipv4.tcp_max_tw_buckets 。
CentOS7 , sysctl -a |grep tw_buckets , 32768,
, 8000, 。
、 , tcp ,
, , , 。
net.ipv4.tcp_tw_recycle = 1
timewait 。 timewait , 。
1 timewait , 。
net.ipv4.tcp_tw_reuse = 1
1, timewait TCP , 。
net.ipv4.tcp_syncookies = 1
tcp , syn , , syn ack ,
, , ,
( 30s), , , ,
, syn flood***。
1, SYN Cookies, syn flood***。
, ack , ack+syn client ,
, ack+syn , 。
net.ipv4.tcp_max_syn_backlog
tcp 。 syn , , ,
。 CentOS7, 256, syn flood*** , ,
(cpu、 ), , 30000。
net.ipv4.tcp_syn_retries
, syn , 6, 2。
net.ipv4.tcp_synack_retries
, syn+ack , 5, 2, syn flood。
net.ipv4.ip_local_port_range
, 1024 , 。 ,
, 80 , ,
。 32768 61000, 1025 61000。
net.ipv4.tcp_fin_timeout
tcp , FIN-WAIT-2 , timewait 。
, 60, 6。
net.ipv4.tcp_keepalive_time
tcp , established , , 。 , ,
, timewait, ,
( , ), 。
, established, ,
。 。 7200 , 30 。
net.ipv4.tcp_keepalive_intvl
, , , ,
, 。 , , 。
75 , 3 。
net.ipv4.tcp_keepalive_probes
10 11 , 。
。 9, 2。
설정 과 범례
Linux 에서 커 널 파 라 메 터 를 조정 하면 설정 파일 / etc / sysctl. conf 를 직접 편집 한 다음 sysctl - p 명령 을 실행 할 수 있 습 니 다.
위 에서 분석 한 각 커 널 매개 변 수 를 결합 한 범례 는 다음 과 같 습 니 다. net. ipv4. tcp fin timout = 6net. ipv4. tcp keepalive time = 30net. ipv 4. tcp max tw buckets = 8000net. ipv 4. tcp tw reuse = 1net. ipv4. tcp tw recuse time = 30net. ipv4. tcp syncookies = 1net. ip4.4. tcp max syn buckets max syn backlog = 3000 net. ipv4. ipv4. tcp www syn resuse = = 2net. ipv 4. ipv 4. tcp syn www. tcp tw tw tw tw tw tw retries retries = 1025 61000net.ipv4.tcp_keepalive_intvl = 3net.ipv4.tcp_keepalive_probes = 2
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
링크 ux 셸 스 크 립 트 에 전의 가 필요 한 특수 문자와 같은 여러 가지 기 호 를 자주 사용 합 니 다.(), {}/등등.이 문자 들 은 Liux 시스템 에서 특별한 의 미 를 가지 고 있 습 니 다. 만약 우리 가 사용 하 는 과정 에서 그것 에 대해 전 의 를 하...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.