说明:/usr/local/php/etc/php-fpm.conf 用于管理php服务

/usr/local/php/etc/php.ini php本身的全局配置文件


一、清空配置文件

清空命令: > /usr/local/php/etc/php-fpm.conf


二、编辑新的文件/usr/local/php/etc/php-fpm.conf

说明:www表示pool的名字;新增的pool,除了名字和sock不能相同,其他可以一致;不同主机,可以在配置文件中指定不同的pool,即指定不同的监听方式:fastcgi_pass unix:/tmp/php-fcgi.sock


内容如下:

[global]pid=/usr/local/php/var/run/php-fpm.piderror_log=/usr/local/php/var/log/php-fpm.log[www]listen=/tmp/www.sockuser=php-fpmgroup=php-fpmlisten.owner=nobodylisten.group=nobodypm=dynamicpm.max_children=50pm.start_servers=20pm.min_spare_servers=5pm.max_spare_servers=35pm.max_requests=500rlimit_files=1024slowlog=/tmp/www_slow.logrequest_slowlog_timeout=1php_admin_value[open_basedir]=/data/www/:/tmp/[www1]listen=/tmp/www1.sockuser=php-fpmgroup=php-fpmpm=dynamicpm.max_children=50pm.start_servers=20pm.min_spare_servers=5pm.max_spare_servers=35pm.max_requests=500rlimit_files=1024


解释:

listen=/tmp/php-fcgi.sock#较多采用socket监听方式,名字可自定义,默认是127.0.0.1:9000listen.owner=nobody#nginx中默认监听的socket文件权限是所有者只读,属组和其他用户没有任何权限。所以,nginx的启动用户(咱们配置的是nobody)就没有办法去读这个socket文件,最终可能会导致502;或者配置listen.mode=0666listen.group=nobodypm=dynamic#动态,管理pm子进程,如果写成static,则除了pm.max_children,其他不管用pm.max_children=50#子进程最大50个,由于php是阻塞的,1个进程只能同时处理一个php请求,max_children设置高可以同时处理更多的请求,但也意味着会占用更多的服务器资源pm.start_servers=20#一开始启动20个pm.min_spare_servers=5#空闲时,最小为5个pm.max_spare_servers=35#空闲时,最多为35个pm.max_requests=500#一个子进程在生命周期内共处理多少个请求,自动销毁,可以解决php内存泄露的问题。但如果这个值设置太小,造成php频繁重启,也会对性能造成影响rlimit_files=1024#每一个进程所使用的文件描述符限制slowlog=/tmp/www_slow.log#增加slow日志,当网络访问慢时,可以查看该日志request_slowlog_timeout=1#当脚本执行时间超过1秒钟,就记录php_admin_value[open_basedir]=/data/www/:/tmp/#用于不同域名来限制访问目录


三、pool池的体现

说明:根据配置文件,php-fpm可以启动多个pool池,分给不同的主机用,默认启动20个,如没有请求,则会一点一点损耗;不同的域名也可以使用相同的池子;分开的话,权限可以分开,一旦池子出现故障,可以避免其他网站同时挂掉