我这里作为演示,只启用两个php-fpm实例,把php-fpm分为两部分,每部分各听一个端口或socket,这样就减少了lock,依然保持400个php-fpm进程,当然还有2个主进程,每个实例启用200个,采用nginx的upstream负载均衡,轮询每个socket来处理请求。
实验环境:php5.3系列+php-fpm
具体操作:
1、第一步:
2、第二步
cp /etc/init.d/php-fpm /etc/init.d/php-fpm2
vi /etc/init.d/php-fpm2
修改
prefix=/usr/local/phpexec_prefix=${prefix}php_fpm_BIN=${exec_prefix}/sbin/php-fpmphp_fpm_CONF=${prefix}/etc/php-fpm2.confphp_fpm_PID=${prefix}/var/run/php-fpm2.pid
3、第三步
这个根据情况。
有的启动脚本,启动/etc/init.d/php-fpm2 可能会报错,可以再复制一个 /sbin/php-fpm 为 /sbin/php-fpm2,但是对应配置文件也要调整下。
或者采用这样方法,写到 /etc/init.d/php-fpm 里面:
#/usr/local/php/sbin/php-fpm --fpm-config /usr/local/php/etc/php-fpm.1.conf#/usr/local/php/sbin/php-fpm --fpm-config /usr/local/php/etc/php-fpm.2.conf
=====================================================
好了,接下来搞nginx的配置文件
编辑nginx.conf 主配置文件,在http段哦
upstream backend{ server unix:/tmp/php-cgi.sock; server unix:/tmp/php-cgi2.sock; }
然后;
再重启下nginx。另外值得一题的是:高并发时使用tcp端口的方式比socket方式相对稳定一点,但是使用端口的方式,处理的效率确实比socket效率低了那么一点。