为每个网站单独创建独立的 PHP-FPM 池(pool),例如:wenxian8.com。这是中高级服务器性能优化和资源隔离的常用做法,下面我详细解释 每一步的意义和好处:
【单独创建独立的 PHP-FPM 池好处】
资源隔离:每个网站单独一个 PHP-FPM 进程池,互不影响。某个站挂了不会拖垮其他站。
精准调优:不同网站可以设置不同的 pm.max_children、pm 模式,甚至 php_admin_value。比如流量大的网站设置多些进程,小网站设置少些。
安全性更高:open_basedir 限定每站只能访问自己目录,防止跨站读写。Socket 通讯更快:listen = /tmp/php-cgi-wenxian8.sock 比端口方式(如 127.0.0.1:9000)效率更高,尤其本地通信。
第一步:在/www/server/php/74/etc/php-fpm.d/ 或:/www/server/php/80/etc/php-fpm.d/
下创建 wenxian8.com.conf,然后复制下面的代码保存:
[wenxian8]
user = www
group = www
listen = /tmp/php-cgi-wenxian8.sock
listen.owner = www
listen.group = www
listen.mode = 0660
pm = ondemand
pm.max_children = 80
pm.process_idle_timeout = 10s
pm.max_requests = 500
php_admin_value[open_basedir] = /www/wwwroot/wenxian8.com/:/tmp/
第二步:
确保在/www/server/php/74/etc/php-fpm.conf 里有加上引用
include=/www/server/php/74/etc/php-fpm.d/*.conf
如果没加请加上。
第三步:
/www/server/panel/vhost/nginx 下打开wenxian8.com.conf
(也可以:在宝塔-网站-设置-配置文件内)
找到并注销掉:include enable-php-74.conf;
替换成:
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/tmp/php-cgi-wenxian8.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
重启:
systemctl restart php-fpm-74
/etc/init.d/php-fpm-74 restart
查看是否生效:
ps aux | grep php-fpm
如果能找到 php-fpm: pool wenxian8 就成功了。
查看当前占用最多资源的进程
top
使用以下命令查看哪个网站的 PHP-FPM 进程在占用资源:
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | grep php
找出 Nginx 正在处理的请求(含访问路径)