nginx 와 php - fpm 서버 설정, 높 은 병행 실현

4543 단어 서버
설명: 고성능 서버 는 nginx 와 phop - fpm 를 설정 하여 docker 용기 기술 을 대체 하여 요청 서비스 가 높 은 병행 처 리 를 실현 합 니 다.
주요 매개 변 수 를 설정 하고 설명 하고 싶 습 니 다.
nginx 주요 설정
nginx 를 통 해 php - fpm 서버 부 하 를 실현 하고 사용자 가 서 비 스 를 방문 할 때 서로 다른 php - fpm 서버 에 할당 을 요청 합 니 다.
# nginx  worker   
worker_processes auto;

#Changes the limit on the maximum number of open files (RLIMIT_NOFILE) for worker processes.              , linux      
worker_rlimit_nofile 65535;
#   worker      ,          [-20,19]
worker_priority -20;

events{
    # The maximum number of connections that each worker process can handle simultaneously.            
    worker_connections 10240;
    # If multi_accept is disabled, a worker process will accept one new connection at a time. Otherwise, a worker process will accept all new connections at a time.
    multi_accept on;
}

http{
    access_log /var/log/nginx/access.log main buffer=32k;
    
    # Nginx   sendfile           。
    sendfile on;
    
    #               ,    ,  6    ,5    9000     ,1    9001     
    upstream phpload{
        server 127.0.0.1:9000 weight=6;
        server 127.0.0.1:9001 weight=1;
    }
    
    server{
        listen 443;
        
        root /data/www/webserver;
        index index.php;
        
        location / {
            if (!-e $request_filename) {
                rewrite  ^(.*)$  /index.php?s=$1  last;
                break;
            }
        }
        
        location ~ .php($|/){
            set $script $uri;
            set $path_info "";

            if ($uri ~ "^(.+.php)(/.+)") {
                set $script $1;
                set $path_info $2;
            }

            fastcgi_param SCRIPT_FILENAME $document_root$script;
            fastcgi_param SCRIPT_NAME $script;
            fastcgi_param PATH_INFO $path_info;

            try_files $uri =404;
            
            #     ,       php   
            fastcgi_pass  myfastcgi;
            fastcgi_index index.php;
            include       fastcgi_params;
        }
    }
}

php - fpm 주요 설정
  • pm 가 dynamic 설정 일 때 php - fpm 가 최대 100 자 라인 을 시작 할 때 테스트 결과 에 따라 성능 이 가장 좋다.
  • max_requests 설정 획득 요청 수량 가능 한 한 많 음
  • ; php        
    listen = 127.0.0.1:9001
    
    pm = dynamic
    pm.max_children = 100
    pm.start_servers = 2
    pm.min_spare_servers = 2
    pm.max_spare_servers = 40
    ; php-fpm                
    pm.max_requests = 10240
    

    php - fpm 실례 시작
    pp - fpm 시작 인 스 턴 스, 서로 다른 프로필 설정, 각 프로필 감청 포트 번호
    php-fpm -y /etc/php-fpm.d/9001.conf
    

    php - fpm - h 도움말 보기, 더 많은 명령 사용 방식 가 져 오기
    php - fpm 조작 명령
    PID 는 php - fpm 인 스 턴 스 master 프로 세 스 번호 입 니 다.
    인 스 턴 스 설정 다시 불 러 오기
    kill -USR2 [PID]
    

    침착 정지 php - fpm
    kill -QUIT [PID]
    

    테스트
    설정: 4 핵 CPU 8G 메모리 20M 대역 폭, php - fpm 3 개 오픈, php - fpm 당 최대 150 자 라인 시작, nginx 4 개 worker 시작, php 버 전 5.4
    ab -c 200 -n 10000 https://tongkuaikeji.com/
    

    결실
    CPU 사용률 100%, 메모리 사용률 20%, 대역 폭 피크 11M, 메모리 사용률 과 대역 폭 피크 값 은 백 엔 드 서비스 실행 데이터 와 전송 데이터 와 관련 이 있 으 므 로 참고 하 시기 바 랍 니 다.
    This is ApacheBench, Version 2.3 
    Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
    Licensed to The Apache Software Foundation, http://www.apache.org/
    
    Benchmarking tongkuaikeji.com (be patient)
    
    Completed 10000 requests
    Finished 10000 requests
    
    
    Server Software:        nginx/1.14.2
    Server Hostname:        tongkuaikeji.com
    Server Port:            443
    SSL/TLS Protocol:       TLSv1.2,ECDHE-RSA-AES128-GCM-SHA256,2048,128
    
    Document Path:          /
    Document Length:        1662 bytes
    
    Concurrency Level:      200
    Time taken for tests:   56.434 seconds
    Complete requests:      10000
    Failed requests:        0
    Write errors:           0
    Total transferred:      20050000 bytes
    HTML transferred:       16620000 bytes
    Requests per second:    177.20 [#/sec] (mean)
    Time per request:       1128.685 [ms] (mean)
    Time per request:       5.643 [ms] (mean, across all concurrent requests)
    Transfer rate:          346.95 [Kbytes/sec] received
    
    Connection Times (ms)
                  min  mean[+/-sd] median   max
    Connect:       81  246 445.6    112    8881
    Processing:   403  849 269.5    837    2120
    Waiting:      403  848 269.0    835    2120
    Total:        493 1095 452.8   1029    9311
    
    Percentage of the requests served within a certain time (ms)
      50%   1029
      66%   1135
      75%   1214
      80%   1283
      90%   1551
      95%   1725
      98%   2127
      99%   2598
     100%   9311 (longest request)
    

    좋은 웹페이지 즐겨찾기