最近做的 NGINX + PHP-FPM 优化,记录一下,留待后用。

测试环境,8 核 CPU,64G 内存。

1、PHP-FPM 配置文件

listen = 127.0.0.1:9000 修改为 listen = /tmp/php-fpm.sock
listen.backlog 取消注释,并修改值为 102400
pm = dynamic 修改为 pm = static
pm.max_children 的值修改为 200

2、启动多个 PHP-FPM 实例

复制 php-fpm.conf 配置文件

cp php-fpm.conf php-fpm.1.conf

修改复制的 php-fpm.1.conf

listen = /tmp/php-fpm.sock 修改为 listen = /tmp/php-fpm.1.sock

建议启动的 PHP-FPM 实例数量与 CPU 核心数量一致。

3、NGINX 配置文件

worker_processes 8;
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
worker_rlimit_nofile 204800;
events {
    use epoll;
    worker_connections 204800;
}
upstream phpbackend {
    server unix:/tmp/php-fpm.sock
    server unix:/tmp/php-fpm.1.sock
}
server {
    default backlog = 102400;
    location ~ .php$ {
        fastcgi_pass   phpbackend;
        include        fastcgi_params;
    }
}

4、修改系统打开文件数

打开 /etc/security/limits.conf 文件,添加:

* soft nofile 65535
* hard nofile 65535

修改完成需要重启服务器生效!并可使用下面命令查看是否生效:

ulimit -n