nginx與php怎麼處理高併發

高性能服務器經過配置nginx和php-fpm,代替docker容器技術,實現請求服務高併發處理。php

主要說明配置主要參數。linux

nginx主要配置nginx

經過nginx實現php-fpm服務器負載,用戶訪問服務時,將請求分配給不一樣的php-fpm服務器。laravel

# 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是一個PHP FastCGI的管理器,它實際上就是PHP源代碼的補丁,旨在將FastCGI進程管理引進到PHP軟件包中,咱們必須將其patch到PHP源代碼中,而後再行編譯才能使用。而如今咱們能夠在PHP 5.3.2及更新版本中直接開啓並使用便可,由於PHP從該版本已經將其收入到軟件包中,因此其再也不是補丁包的存在了。web

php-fpm主要配置面試

pm爲dynamic配置時,php-fpm最大啓動100子線程時,根據測試結果性能最好。max_requests 設置獲取請求數量儘量大sql

; 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實例啓動docker

php-fpm啓動實例,設置不一樣的配置文件,每一個配置文件監聽不一樣端口號shell

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]

以上就是nginx與php怎麼實現高併發的詳細內容

以上內容但願幫助到你們, 不少PHPer在進階的時候總會遇到一些問題和瓶頸,業務代碼寫多了沒有方向感,不知道該從那裏入手去提高,對此我整理了一些資料,包括但不限於:分佈式架構、高可擴展、高性能、高併發、服務器性能調優、TP6,laravel,Redis,Swoole、Swoft、Kafka、Mysql優化、shell腳本、Docker、微服務、Nginx等多個知識點高級進階乾貨須要的能夠免費分享給你們 ,須要戳這裏     PHP進階架構師>>>實戰視頻、大廠面試文檔免費獲取

相關文章
相關標籤/搜索