当 LNMP 组合工作时,首先是用户通过浏览器输入域名请求 Nginx Web 服务,如果请求的是静态资源,则由 Nginx 解析返回给用户;如果是动态请求(如 PHP),那么 Nginx 就会把它通过 FastCGI 接口发送给 PHP 引擎服务(即 php-fpm)进行解析,如果这个动态请求要读取数据库数据,那么 PHP 就会继续向后请求 MySQL 数据库,以读取需要的数据,并最终通过 Nginx 服务把获取的数据返回给用户,这就是 LNMP 环境的基本请求流程。

FastCGI 介绍:CGI 通用网关接口,是 HTTP 服务器与其他机器上的程序服务通信交流的一种工具,CGI 接口的性能较差,每次 HTTP 服务器遇到动态程序时都需要重新启动解析器来执行解析,之后结果才会被返回 HTTP 服务器,因此就有了 FastCGI ,FastCGI 是一个在 HTTP 服务器和动态脚本语言间通信的接口,主要是把动态语言和 HTTP 服务器分离开来,使得 HTTP 服务器专一地处理静态请求,提高整体性能,在 Linux 下,FastCGI 接口即为 socket ,这个 socket 可以是文件 socket 也可以是 IP socket 

FastCGI 相关参数调优 _NGINX 调优

[root@localhost ~]# cat /usr/local/nginx/conf/nginx.conf
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;   
    
    server {
        listen       80;
        server_name  www.abc.com;
        location / {
            root   html/www;
            index  index.html index.htm;
        }
        location ~ .*\.(php|php5)?$ {
            root            html/www;
            fastcgi_pass    127.0.0.1:9000;
            fastcgi_index   index.php;
            include         fastcgi.conf;         
        }
    }
}

FastCGI 相关参数调优 _NGINX 调优

[root@localhost ~]# pkill php-fpm
[root@localhost ~]# /usr/local/php/sbin/php-fpm