码迷,mamicode.com
首页 > Web开发 > 详细

12.21 php-fpm的pool

时间:2018-05-02 13:14:35      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:pool

12.21 php-fpm的pool

和LAMP不同的是,在LNMP架构中,php-fpm座位独立的一个服务存在。既然是独立服务,那么它必然有自己的配置文件。

php-fpm的配置文件为/usr/local/php-fpm/etc/php-fpm.conf,它同样也支持include语句,类似于nginx.conf里面的include。

Nginx可以配置多个虚拟主机,php-fpm同样也支持配置多个pool,每一个pool可以监听一个端口(ip:port),也可以监听一个socket。

为什么要隔离pool?

因为如果pool有某一个站点发生问题,例如其中一个站点占用了庞大的资源,导致其他站点运行卡顿,或者奔溃,所以这样会牵连pool里面其他站点的运行。


定义pool

1 进入php-fpm/etc/配置目录

 [root@AliKvn ~]#  cd /usr/local/php-fpm/etc/

[root@AliKvn etc]# ls

pear.conf  php-fpm.conf  php-fpm.conf.default  php.ini

2 添加pool,名为aming.com,参数如下。

[root@AliKvn etc]# vim php-fpm.conf
[aming.com]
listen = /tmp/aming.sock
#listen = 127.0.0.1:9000
listen.mode = 666
user = php-fpm
group = php-fpm
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024

3 添加完成后-t检查语法并重启或者reload。

[root@AliKvn etc]# /usr/local/php-fpm/sbin/php-fpm -t

[02-May-2018 11:32:20] NOTICE: configuration file /usr/local/php-fpm/etc/php-fpm.conf test is successful


[root@AliKvn etc]# /etc/init.d/php-fpm reload 

Reload service php-fpm  done

4 查看进程,看看进程右侧有没有多了刚刚配置的pool(aming.com)

技术分享图片

5 修改aaa.com监听aming的socket,添加如下参数

location ~ \.php$
    {
        include fastcgi_params;
        fastcgi_pass unix:/tmp/php-fcgi.sock;
#        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /data/wwwroot/default$fastcgi_script_name;
    }
}

6 加入 include语法,拆分pool的配置文件conf

include = etc/php-fpm.d/*.conf

[root@AliKvn php-fpm.d]# !vim

vim /usr/local/php-fpm/etc/php-fpm.conf

[global]
pid = /usr/local/php-fpm/var/run/php-fpm.pid
error_log = /usr/local/php-fpm/var/log/php-fpm.log
include = etc/php-fpm.d/*.conf

6.1 复制参数

创建php-fpm.d目录

[root@AliKvn etc]# mkdir php-fpm.d

[root@AliKvn etc]# cd php-fpm.d/

[root@AliKvn php-fpm.d]# cat /usr/local/php-fpm/etc/php-fpm.conf

技术分享图片

[root@AliKvn php-fpm.d]# vim www.conf 

6.2 复制www参数到www.conf

[www]
listen = /tmp/php-fcgi.sock
#listen = 127.0.0.1:9000
listen.mode = 666
user = php-fpm
group = php-fpm
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024


[root@AliKvn php-fpm.d]# vim aming.conf 

6.3 复制aming.com参数到aming.conf

[aming.com]
listen = /tmp/aming.sock
#listen = 127.0.0.1:9000
listen.mode = 666
user = php-fpm
group = php-fpm
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024


6.4 [root@AliKvn php-fpm.d]# ls

aming.conf  www.conf


7 复制完成后,删除php-fpm.conf两个pool的参数,加入include语法,再删除后可以看到参数是多么的干净利落。

[root@AliKvn php-fpm.d]# cat !$

cat /usr/local/php-fpm/etc/php-fpm.conf

[global]
pid = /usr/local/php-fpm/var/run/php-fpm.pid
error_log = /usr/local/php-fpm/var/log/php-fpm.log
include = etc/php-fpm.d/*.conf


8 检查语法并重新加载。

[root@AliKvn php-fpm.d]# /usr/local/php-fpm/sbin/php-fpm -t

[02-May-2018 12:07:00] NOTICE: configuration file /usr/local/php-fpm/etc/php-fpm.conf test is successful

[root@AliKvn php-fpm.d]# /etc/init.d/php-fpm restart

Gracefully shutting down php-fpm . done

Starting php-fpm  done

9 重启后检查进程

技术分享图片

总结

定义多个pool的原因:

假如现在test.com的请求量很大,导致最终把php-fpm进程耗尽了。

最多可以启动50个子进程,但是启动完50个进程后,所有都在忙,又有新的请求来的时候,

此时会报502状态码,因为没有多余的php-fpm进程给请求监听服务。

而另外一个pool(aming.com)请求则不会受影响,因为它是另外一个pool。


12.21 php-fpm的pool

标签:pool

原文地址:http://blog.51cto.com/13578154/2110637

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!