Nginx 고 효율 전송 모드 설정

글 목록
  • 1. nginx 설정
  • 2. 다른 호스트 에서 압력 테스트
  • 1. nginx 설정
    vi /usr/local/nginx/conf/nginx.conf
    http {
    ......
    sendfile	on;
    tcp_nopush  on;
    keepalive_timeout  65;
    tcp_nodelay on;
    client_header_timeout 15;
    client_body_timeout 15;
    send_timeout 15;
    ......
    }
    
    #  nginx    
    nginx -t
    nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
    nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
    
    #  nginx  
    nginx -s reload
    

    매개 변수 이름
    매개 변수 설명
    sendfile on
    sendfile on 은 파일 의 효율 적 인 전송 모드 를 열 고 tcpnopush on 과 tcpnodelay on 두 명령 을 on 으로 설정 하면 네트워크 와 디스크 I / O 차단 을 방지 하고 Nginx 작업 효율 을 향상 시 킬 수 있 습 니 다.메모: 그림 이 정상적으로 표시 되 지 않 으 면 이것 을 off 로 바 꿉 니 다.
    tcp_nopush on
    sendfile 에서 모드 를 켜 야 유효 합 니 다. 패 킷 을 설정 하면 누적 되 고 함께 전송 하면 전송 효율 을 향상 시 키 고 네트워크 메시지 세그먼트 의 수량 을 적극적으로 줄 일 수 있 습 니 다.
    keepalive_timeout 65
    하나의 요청 이 완 료 된 후에 얼마나 더 연결 해 야 합 니까? 요청 시간 이 얼마 가 아니 라 긴 연결 을 유지 하고 연결 과정 이 시스템 에 가 져 오 는 성능 손실 을 줄 이 는 것 이 목적 입 니 다. 스 레 드 탱크, 데이터 베이스 연결 탱크 와 유사 합 니 다.
    tcp_nodelay on
    가장 핵심 적 인 기능 은 작은 가방 을 큰 가방 으로 구성 하여 대역 폭 이 용 률 을 높이 는 것 이다.
    client_header_timeout 15
    클 라 이언 트 와 서버 가 연결 되 어 있 는 후 request body 를 보 내 는 시간 초과 시간 을 지정 합 니 다.클 라 이언 트 가 지정 한 시간 내 에 내용 을 보 내지 않 으 면 Nginx 는 HTTP 408 (Request Timed Out) 로 돌아 갑 니 다. 기본 값 은 60 초 입 니 다.
    client_body_timeout 15
    클 라 이언 트 가 서버 에 완전한 request header 의 시간 초과 시간 을 보 냅 니 다.클 라 이언 트 가 지정 한 시간 내 에 완전한 request header 를 보 내지 않 으 면 Nginx 는 HTTP 408 (Request Timed Out) 을 되 돌려 줍 니 다. 기본 값 은 60 초 입 니 다.
    send_timeout 15
    클 라 이언 트 가 두 번 데 이 터 를 읽 을 때 클 라 이언 트 에 데 이 터 를 보 내 는 시간 이 초과 되 는 것 을 말 합 니 다. 기본 60s 입 니 다. 연속 적 인 60s 내 클 라 이언 트 가 1 개의 바이트 를 받 지 못 하면 연결 이 닫 힙 니 다.
    2. 다른 호스트 에서 압력 테스트
    Nginx 가 10 만 개의 요청 을 연결 할 수 있다 고 하 니 한번 해 보 겠 습 니 다.
    먼저 Nginx 호스트 에서 원래 의 방문 로 그 를 삭제 하고 Nginx 를 다시 시작 한 다음 방문 로그 로 통 계 를 낼 수 있 습 니 다.
    #      
    rm   /usr/local/nginx/logs/access.log 
    
    #  Nginx         
    nginx -s reload
    

    전기 작업 준비 가 다 되 었 으 니, 그럼 우 리 는 테스트 를 시작 합 시다!
    다른 호스트 에서 테스트 하기
    ab -n 100000 -c 1020  http://172.25.0.20/
    This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
    Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
    Licensed to The Apache Software Foundation, http://www.apache.org/
    
    Benchmarking 172.25.0.20 (be patient)
    Completed 10000 requests
    Completed 20000 requests
    Completed 30000 requests
    Completed 40000 requests
    Completed 50000 requests
    Completed 60000 requests
    Completed 70000 requests
    Completed 80000 requests
    Completed 90000 requests
    Completed 100000 requests
    Finished 100000 requests
    
    
    Server Software:        nginx/1.18.0
    Server Hostname:        172.25.0.20
    Server Port:            80
    
    Document Path:          /
    Document Length:        4247 bytes
    
    Concurrency Level:      1020
    Time taken for tests:   16.232 seconds
    Complete requests:      100000
    Failed requests:        0
    Write errors:           0
    Total transferred:      448200000 bytes
    HTML transferred:       424700000 bytes
    Requests per second:    6160.79 [#/sec] (mean)
    Time per request:       165.563 [ms] (mean)
    Time per request:       0.162 [ms] (mean, across all concurrent requests)
    Transfer rate:          26965.48 [Kbytes/sec] received
    
    Connection Times (ms)
                  min  mean[+/-sd] median   max
    Connect:        0   56 248.9      2    7018
    Processing:     1   94 170.8     61    3296
    Waiting:        1   92 170.5     59    3295
    Total:          2  150 307.5     68    7093
    
    Percentage of the requests served within a certain time (ms)
      50%     68
      66%     81
      75%     93
      80%    105
      90%    232
      95%   1056
      98%   1095
      99%   1242
     100%   7093 (longest request)
    

    Nginx 호스트 에서 접근 수 집계
    #         
     cat  /usr/local/nginx/logs/access.log | wc -l
    200000
    
    #        
    tail  /usr/local/nginx/logs/access.log 
    172.25.0.100 - - [29/Jun/2020:23:50:31 +0800] "GET / HTTP/1.0" 200 4247 "-" "ApacheBench/2.3"
    172.25.0.100 - - [29/Jun/2020:23:50:31 +0800] "GET / HTTP/1.0" 200 4247 "-" "ApacheBench/2.3"
    172.25.0.100 - - [29/Jun/2020:23:50:31 +0800] "GET / HTTP/1.0" 200 4247 "-" "ApacheBench/2.3"
    172.25.0.100 - - [29/Jun/2020:23:50:31 +0800] "GET / HTTP/1.0" 200 4247 "-" "ApacheBench/2.3"
    172.25.0.20 - - [29/Jun/2020:23:50:32 +0800] "GET /first.html HTTP/1.0" 200 4247 "-" "ApacheBench/2.3"
    172.25.0.20 - - [29/Jun/2020:23:50:32 +0800] "GET /first.html HTTP/1.0" 200 4247 "-" "ApacheBench/2.3"
    172.25.0.20 - - [29/Jun/2020:23:50:32 +0800] "GET /first.html HTTP/1.0" 200 4247 "-" "ApacheBench/2.3"
    172.25.0.100 - - [29/Jun/2020:23:50:32 +0800] "GET / HTTP/1.0" 200 4247 "-" "ApacheBench/2.3"
    172.25.0.100 - - [29/Jun/2020:23:50:32 +0800] "GET / HTTP/1.0" 200 4247 "-" "ApacheBench/2.3"
    172.25.0.100 - - [29/Jun/2020:23:50:32 +0800] "GET / HTTP/1.0" 200 4247 "-" "ApacheBench/2.3"
    

    제 가 대 리 를 했 기 때문에 두 배로 나 올 거 예요.
    Nginx 성능 좋 은 데...

    좋은 웹페이지 즐겨찾기