Nginx+Php-fpm運転原理詳細

1536 ワード

php-fpmはmaster(メイン)/worker(サブ)マルチプロセスアーキテクチャであり、nginxの設計スタイルと少し似ています.マスタープロセスは主にCGIおよびPHP環境の初期化、イベントの傍受、サブプロセスの状態などを担当し、workerプロセスはphpリクエストの処理を担当します.
masterは管理を担当するだけで、多くの人がクライアントからの要求をworkerプロセスに分けるのではなく、workerプロセスがクライアントの要求の傍受と処理を担当し、masterはworkerを管理するだけで、例えば再起動したり、プロファイルを再ロードしたりして、要求を配布しません.
killがworkerプロセスを終了すると、新しいworkerプロセスが再起動されます.したがって、クライアント要求は応答処理されるに違いない.これにより、以上の結論が検証され、masterプロセスはサブプロセスの状態を監視し、サブプロセスが停止すると、masterプロセスに信号を送信し、masterプロセスは新しいworkerプロセスを再起動します.
workerは同期ブロックであり、今回の処理が完了するまで待たなければ、他の要求を処理することができず、同時性能がだめである.
nginxとphp‐fpmの結合は,完全な流れがそうである.
 www.example.com
        |
        |
      Nginx
        |
        |
   www.example.com/index.php
        |
        |
  nginx fast-cgi  
        |
        |
fast-cgi  127.0.0.1:9000  
        |
        |
www.example.com/index.php    127.0.0.1:9000
        |
        |
php-fpm   127.0.0.1:9000
        |
        |
php-fpm      ,  worker      
        |
        |
php-fpm      ,   nginx
        |
        |
nginx     http       

1.従来のphp-fpm動作モードの問題
1、Fastcgiプロセスマネージャ、fastcgiプロトコル2、同期ブロックIOプロセスモデル3、要求終了後にすべてのリソースとメモリを解放する4、プロセス数5に制限された同時実行、PHPフレームワークの初期化は大量のコンピューティングリソースを占有する
2.php-fpm動作モードの問題
1、nginxはepollイベントモデルに基づいて、1つのworkerは同時に複数の要求を処理することができる2、fpm-workerは同じ時刻に1つの要求を処理することができる3、masterプロセスはworkerプロセスの監視、ログなどの4、ユーザー側の要求はelbによって解析され、nginx解析5、fpm-workerを経て要求を処理する前にmvcフレームワークを再初期化し、それから資源6、高同時要求の場合、fpm-workerは十分ではなく、nginx直接応答5027、fpm-workerプロセス間の切り替え消費が大きい(例えば、あるオンラインビジネスが4コア8 Gメモリサーバで実質的に16プロセスを利用できる)