높 은 병발 중 nginx 가 좋 은 설정

1. 여기 서 의 최 적 화 는 주로 nginx 에 대한 설정 최 적 화 를 말한다. 일반적으로 nginx 설정 파일 에서 최적화 에 대한 역할 은 주로 다음 과 같은 몇 가지 가 있다. 1. nginx 프로 세 스 수 는 cpu 수량 에 따라 지정 하 는 것 을 권장 한다. 일반적으로 cpu 핵 수 와 같 거나 그 배수 이다.
worker_processes 8;
2. 모든 프로 세 스 에 cpu 를 할당 합 니 다. 상기 8 개의 프로 세 스 를 8 개의 cpu 에 할당 합 니 다. 물론 여러 개 를 쓰 거나 하나의 프로 세 스 를 여러 cpu 에 할당 할 수 있 습 니 다.
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
3. 다음 명령 은 nginx 프로 세 스 가 열 린 가장 많은 파일 설명자 수 를 말 합 니 다. 이론 적 가 치 는 시스템 의 가장 많은 파일 수 (ulimit - n) 와 nginx 프로 세 스 수 를 제외 해 야 합 니 다. 그러나 nginx 배분 요청 이 고 르 지 않 기 때문에 ulimit - n 의 값 과 일치 하 는 것 이 좋 습 니 다.
worker_rlimit_nofile 65535;
4. epoll 의 I / O 모델 을 사용 하여 이 모델 로 비동기 사건 을 효율적으로 처리 합 니 다.
use epoll;
5. 모든 프로 세 스 가 허용 하 는 최대 연결 수, 이론 적 으로 모든 nginx 서버 의 최대 연결 수 는 worker 입 니 다.processes*worker_connections。
worker_connections 65535;
6. http 연결 시간 이 초과 되 었 습 니 다. 기본 값 은 60s 입 니 다. 기능 은 클 라 이언 트 가 서버 에 연결 하 는 것 을 설정 한 시간 내 에 지속 적 으로 유효 하 게 하 는 것 입 니 다. 서버 에 대한 후계 요청 이 나타 날 때 이 기능 은 연결 을 만 들 거나 다시 만 드 는 것 을 피 할 수 있 습 니 다.이 매개 변 수 를 너무 크게 설정 해 서 는 안 된다 는 것 을 명심 하 세 요!그렇지 않 으 면 많은 잘못된 http 연결 이 nginx 의 연결 수 를 차지 하고 nginx 가 무 너 집 니 다!keepalive_timeout 60;
7. 클 라 이언 트 가 요청 한 머리의 버퍼 크기 입 니 다. 이것 은 시스템 의 페이지 크기 에 따라 설정 할 수 있 습 니 다. 보통 요청 한 머리 크기 는 1k 를 초과 하지 않 지만 일반 시스템 의 페이지 는 1k 이상 이 어야 하기 때문에 페이지 크기 로 설정 합 니 다.페이지 크기 는 명령 getconf PAGESIZE 로 가 져 올 수 있 습 니 다.
client_header_buffer_size 4k;
8. 다음 매개 변 수 는 파일 을 열기 위해 캐 시 를 지정 합 니 다. 기본 값 은 사용 되 지 않 았 습 니 다. max 는 캐 시 수량 을 지정 합 니 다. 파일 을 여 는 것 과 일치 하 는 것 을 권장 합 니 다. inactive 는 파일 이 요청 되 지 않 은 지 얼마 지나 지 않 아 캐 시 를 삭제 하 는 것 을 말 합 니 다.
open_file_cache max=102400 inactive=20s;
9. 다음은 캐 시 를 얼마나 자주 검사 하 는 지 에 대한 유효한 정 보 를 말 합 니 다.open_file_cache_valid 30s;
10、open_file_cache 명령 의 inactive 매개 변 수 는 시간 내 에 파일 의 최소 사용 횟수 입 니 다. 이 숫자 를 초과 하면 파일 설명 자 는 캐 시 에서 열 려 있 습 니 다. 예 를 들 어 inactive 시간 내 에 한 번 도 사용 되 지 않 으 면 삭 제 됩 니 다.
open_file_cache_min_uses 1;
11. 응답 헤드 에 있 는 운영 체제 와 웹 서버 (Nginx) 버 전 번호 에 대한 정 보 를 숨 기 는 것 이 안전성 에 좋 습 니 다.
server_tokens off;
12. sendfile () 이 역할 을 발휘 할 수 있 습 니 다.sendfile () 은 디스크 와 TCP socket 사이 에서 서로 데 이 터 를 복사 할 수 있 습 니 다 (또는 임의의 두 파일 설명자).Pre - sendfile 은 데 이 터 를 전송 하기 전에 사용자 공간 에서 데이터 버퍼 를 신청 합 니 다.그 다음 에 read () 로 데 이 터 를 파일 에서 이 버퍼 로 복사 하고 write () 는 버퍼 데 이 터 를 네트워크 에 기록 합 니 다.sendfile () 은 디스크 에서 OS 캐 시 로 데 이 터 를 즉시 읽 습 니 다.이 복사 본 은 커 널 에서 이 루어 졌 기 때문에 sendfile () 은 조합 read () 와 write (), 닫 기 버퍼 를 여 는 것 보다 더 효과 적 입 니 다 (sendfile 에 관 한 것 이 더 많 습 니 다).
sendfile on;
13. nginx 에 게 하나의 패 킷 에서 모든 헤더 파일 을 보 내 고 하나씩 보 내지 않 는 다 고 알려 줍 니 다.패 킷 이 바로 전송 되 지 않 고 패 킷 이 가장 클 때 한꺼번에 전송 되면 네트워크 막힘 을 해결 하 는 데 도움 이 된다 는 것 이다.
tcp_nopush on;
14. nginx 에 게 데 이 터 를 캐 시 하지 말고 한 단락 의 전송 이 라 고 알려 줍 니 다. 데 이 터 를 제때에 보 내야 할 때 이 속성 을 설정 해 야 합 니 다. 그러면 작은 데이터 정 보 를 보 낼 때 바로 반환 값 을 받 을 수 없습니다.
tcp_nodelay on;예 를 들 면:
http { server_tokens off; sendfile on; tcp_nopush on; tcp_nodelay on; ......}
15. 클 라 이언 트 가 요청 한 머리의 버퍼 크기 입 니 다. 이것 은 시스템 의 페이지 크기 에 따라 설정 할 수 있 습 니 다. 보통 요청 헤더 의 크기 는 1k 를 초과 하지 않 지만 일반 시스템 의 페이지 는 1k 이상 이 어야 하기 때문에 여 기 는 페이지 크기 로 설정 합 니 다.
client_header_buffer_size 4k;
16. 클 라 이언 트 가 요청 한 머리의 버퍼 크기 입 니 다. 이것 은 시스템 의 페이지 크기 에 따라 설정 할 수 있 습 니 다. 보통 요청 헤더 의 크기 는 1k 를 초과 하지 않 지만 일반 시스템 의 페이지 는 1k 이상 이 어야 하기 때문에 여 기 는 페이지 크기 로 설정 합 니 다.페이지 크기 는 명령 getconf PAGESIZE 로 가 져 올 수 있 습 니 다.
[root@test- huanqiu ~] \ # getconf PAGESIZE 4096 도 있 지만 clientheader_buffer_size 가 4k 를 넘 는 경우, 하지만 clientheader_buffer_size 이 값 은 '시스템 페이지 크기' 의 전체 배수 로 설정 해 야 합 니 다.
17. 파일 을 열기 위해 캐 시 를 지정 합 니 다. 기본 값 은 사용 되 지 않 았 습 니 다. max 는 캐 시 수량 을 지정 합 니 다. 파일 을 여 는 것 과 일치 하 는 것 을 권장 합 니 다. inactive 는 파일 이 요청 되 지 않 은 지 얼마 지나 지 않 아 캐 시 를 삭제 하 는 것 을 말 합 니 다.
open_file_cache max=65535 inactive=60s;
18、open_file_cache 명령 의 inactive 매개 변 수 는 시간 내 에 파일 의 최소 사용 횟수 입 니 다. 이 숫자 를 초과 하면 파일 설명 자 는 캐 시 에서 열 려 있 습 니 다. 예 를 들 어 inactive 시간 내 에 한 번 도 사용 되 지 않 으 면 삭 제 됩 니 다.
open_file_cache_min_uses 1;
19. 캐 시 에 대한 유효한 정 보 를 확인 하 는 데 얼마나 걸 릴 지 지정 합 니 다.open_file_cache_valid 80s;
다음은 간단 한 nginx 프로필 을 사용 합 니 다: [root@dev-huanqiu ~]# cat /usr/local/nginx/conf/nginx.confuser www www;worker_processes 8;worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000;error_log /www/log/nginx_error.log crit;pid /usr/local/nginx/nginx.pid;worker_rlimit_nofile 65535;
events{use epoll;worker_connections 65535;}
http{include mime.types;default_type application/octet-stream;
charset utf-8;
server_names_hash_bucket_size 128;client_header_buffer_size 2k;large_client_header_buffers 4 4k;client_max_body_size 8m;
sendfile on;tcp_nopush on;
keepalive_timeout 60;
fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2keys_zone=TEST:10minactive=5m;fastcgi_connect_timeout 300;fastcgi_send_timeout 300;fastcgi_read_timeout 300;fastcgi_buffer_size 16k;fastcgi_buffers 16 16k;fastcgi_busy_buffers_size 16k;fastcgi_temp_file_write_size 16k;fastcgi_cache TEST;fastcgi_cache_valid 200 302 1h;fastcgi_cache_valid 301 1d;fastcgi_cache_valid any 1m;fastcgi_cache_min_uses 1;fastcgi_cache_use_stale error timeout invalid_header http_500; open_file_cache max=204800 inactive=20s;open_file_cache_min_uses 1;open_file_cache_valid 30s;
tcp_nodelay on;
gzip on;gzip_min_length 1k;gzip_buffers 4 16k;gzip_http_version 1.0;gzip_comp_level 2;gzip_types text/plain application/x-javascript text/css application/xml;gzip_vary on;
server{listen 8080;server_name huan.wangshibo.com;index index.php index.htm;root /www/html/;
 location /status
 {
     stub_status on;
 }

 location ~ .*\.(php|php5)?$
 {
     fastcgi_pass 127.0.0.1:9000;
     fastcgi_index index.php;
     include fcgi.conf;
 }

 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$
 {
   expires       30d;
 }

 log_format   access   '$remote_addr - $remote_user [$time_local] "$request" '
           '$status $body_bytes_sent "$http_referer" '
           '"$http_user_agent" $http_x_forwarded_for';
 access_log   /www/log/access.log   access;
   }

}
2. FastCGI 에 관 한 몇 가지 명령 1. 이 명령 은 FastCGI 캐 시 로 하나의 경로, 디 렉 터 리 구조 등급, 키워드 영역 저장 시간 과 비 활동 삭제 시간 을 지정 합 니 다.
fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;
2. 백 엔 드 FastCGI 에 연결 할 시간 초과 시간 을 지정 합 니 다.
fastcgi_connect_timeout 300;
3. FastCGI 에 요청 을 전송 하 는 시간 초과, 이 값 은 악 수 를 두 번 마 친 후 FastCGI 에 요청 을 전송 하 는 시간 초과.
fastcgi send timeout 300; 4. FastCGI 응답 을 받 는 시간 초과 시간 입 니 다. 이 값 은 악 수 를 두 번 마 친 후 FastCGI 응답 을 받 는 시간 초과 시간 을 말 합 니 다.
fastcgi_read_timeout 300;
5. FastCGI 응답 을 읽 는 첫 번 째 부분 에 얼마나 큰 버퍼 를 사용 해 야 하 는 지 지정 합 니 다. 여 기 는 fastcgi buffers 명령 이 지정 한 버퍼 크기 로 설정 할 수 있 습 니 다. 위의 명령 은 1 개의 16k 버퍼 를 사용 하여 응답 의 첫 번 째 부분, 즉 응답 헤드 를 읽 도록 지정 합 니 다. 사실은 이 응답 헤드 는 보통 작 습 니 다 (1k 를 초과 하지 않 습 니 다)그러나 fastcgi buffers 명령 에 버퍼 크기 를 지정 하면 fastcgi buffers 가 지정 한 버퍼 크기 를 캐 시 에 할당 합 니 다.
fastcgi_buffer_size 16k;
6. FastCGI 의 응답 을 로 컬 에서 얼마나 큰 버퍼 로 버퍼 링 해 야 하 는 지 지정 합 니 다. 위 에서 보 듯 이 phop 스 크 립 트 가 발생 하 는 페이지 크기 가 256 k 이면 16k 버퍼 16 개 를 할당 하여 캐 시 합 니 다. 256 k 이상 이면 256 k 이상 의 부분 은 fastcgi temp 이 지정 한 경로 에 캐 시 됩 니 다. 물론 서버 부하 에 있어 현명 하지 못 한 방안 입 니 다.메모리 에서 데 이 터 를 처리 하 는 속도 가 하 드 디스크 보다 빨 라 야 합 니 다. 보통 이 값 의 설정 은 사이트 의 phop 스 크 립 트 가 발생 하 는 페이지 크기 의 중간 값 을 선택해 야 합 니 다. 예 를 들 어 사이트 의 대부분 스 크 립 트 가 발생 하 는 페이지 크기 가 256 k 이면 이 값 을 16 16k 또는 4 64k 또는 64 4k 로 설정 할 수 있 습 니 다. 그러나 뒤의 두 가지 설정 방법 은 좋 은 설정 방법 이 아 닙 니 다. 왜냐하면생 성 된 페이지 가 32k 에 불과 하 다 면, 4 64k 를 사용 하면 64k 버퍼 1 개 를 캐 시 에 할당 하고, 64 4k 를 사용 하면 4k 버퍼 8 개 를 캐 시 에 할당 하 며, 16 16k 를 사용 하면 16k 를 캐 시 페이지 에 2 개 를 할당 하 는 것 이 더 합 리 적 인 것 같 습 니 다.
fastcgi_buffers 16 16k;
7. 이 명령 은 저도 무엇 을 하 는 지 모 르 겠 습 니 다. 기본 값 이 fastcgi buffers 의 두 배 밖 에 모 릅 니 다.
fastcgi_busy_buffers_size 32k;
8. fastcgi temp path 를 쓸 때 얼마나 큰 데이터 블록 을 사용 합 니까? 기본 값 은 fastcgi buffers 의 두 배 입 니 다.
fastcgi_temp_file_write_size 32k;
9. FastCGI 캐 시 를 열 고 이름 을 지정 합 니 다. 개인 적 으로 캐 시 를 여 는 것 이 매우 유용 하 다 고 생각 합 니 다. CPU 부 하 를 효과적으로 줄 이 고 502 오 류 를 방지 할 수 있 습 니 다. 그러나 이 캐 시 는 동적 페이지 이기 때문에 많은 문 제 를 일 으 킬 수 있 습 니 다. 구체 적 으로 사용 하려 면 자신의 요구 에 따라 야 합 니 다.
fastcgi_cache TEST
10. 지정 한 응답 코드 에 캐 시 시간 을 지정 합 니 다. 예 를 들 어 상기 200, 302 응답 캐 시 는 1 시간, 301 응답 캐 시 는 1 일, 나머지 는 1 분 입 니 다.
fastcgi_cache_valid 200 302 1h;fastcgi_cache_valid 301 1d;fastcgi_cache_valid any 1m;
11. 캐 시 는 fastcgi cache path 명령 inactive 매개 변수 값 시간 내 에 최소 사용 횟수 입 니 다. 예 를 들 어 5 분 동안 한 파일 이 한 번 도 사용 되 지 않 으 면 이 파일 은 삭 제 됩 니 다.
fastcgi_cache_min_uses 1;
12. 이 매개 변수의 역할 을 모 르 고 nginx 에 게 어떤 유형의 캐 시 를 알 리 는 것 이 소 용이 없 을 것 이 라 고 추측 합 니 다.
fastcgi_cache_use_stale error timeout invalid_header http_500;

좋은 웹페이지 즐겨찾기