LNMP架构(六)

  • 来源:新网
  • 更新日期:2018-03-16

摘要:摘要: 12.21 php-fpm的pool 12.22 php-fpm慢执行日志 12.23 open_basedir 12.24 php-fpm进程管理 扩展 nginx中的root和alias区别 http://blog.csdn.net/21aspnet/article/details/6583335 nginx的alias和root配置 http://www.ttlsa.com/

一 php-fpm的pool

pool叫做池子,比如下图中的www就是一个池子,目前在php-fpm中只定义了这一个pool,其实php-fpm是支持定义多个pool的,每一个池子可以监听不同的socket或者IP+端口,比如nginx有多个站点,那么每一个站点就可以使用一个pool,这样做的好处是,当其中一个php出现502了,502很有可能是php资源不够了,如果所有的网站使用的是同一个pool,那么其中一个网站发生了一些故障,比如一些程序员写的程序有问题,它就会把php资源耗尽,那这样就会造成一个结果是其他的站点也会502,所有我们有必要把每一个站点隔离开来,每一个站点使用单独的pool

如何写多个pool呢,php里面可以在配置文件中继续增加pool

1、编辑配置文件

# vi /usr/local/php-fpm/etc/php-fpm.conf

我们在配置文件中新增一个池子lijie.com

[lijie.com]
listen = /tmp/lijie.sock
#listen = 127.0.0.1:9000
listen.mode = 666
user = php-fpm
group = php-fpm
#listen.owner = nobody
#listen.group = nobody
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

2、检查语法错误

# /usr/local/php-fpm/sbin/php-fpm-t

3、重新加载php-fpm服务

# /etc/init.d/php-fpmreload

4、查看新增pool是否生效

# ps aux |grep pool //下图可以看到pool中已经存在lijie.com了

5、pool的使用

如果想给网站aaa.com配置上面新增的pool,可以在网站对应的nginx虚拟主机配置文件/usr/local/nginx/conf/vhost/aaa.com.conf中做如下配置:

上面的配置中要求监听的路径(socket或者IP)与在php-fpm.conf中配置的pool监听的路径一致

配置完成后,就实现了test.com请求的是www这个pool,aaa.com请求的是lijie.com这个pool,这时候假如test.com的请求量很大,把php-fpm的进程耗尽了,最大可以请求50个,结果当50个已经请求完,这时test.com又有新的请求来的时候,结果就会报502,因为它没有多余的php进程再来提供服务了,此时呢 aaa.com这个站点不受影响,因为它用到的pool是另外一个

6、include vhost/*.conf

在nginx.conf中我们支持include vhost/*.conf的写法来将不同虚拟主机的配置文件分开写在不同的文件中,同样的在php-fpm中也支持这种写法,这样写了后,可以将不同的pool分开写在不同的文件中

首先创建一个目录用于存放所有的pool

# mkdir /usr/local/php-fpm/etc/php-fpm.d

然后在/usr/local/php-fpm/etc/php-fpm.conf 的[global]中加入以下语句:

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

同时,将原来的两个pool分别写入到两个新建的文件中,并将这两个文件放到/usr/local/php-fpm/etc/php-fpm.d/目录下,

修改后的结果如下:

1)php-fpm.conf中的内容如下:

2)php-fpm.d目录下的文件有以下两个:

3)其中www.conf中的内容如下:

4)lijie.conf中的内容如下:

 

二 php-fpm慢执行日志

这个慢执行日志非常有用。建议使用LNMP的原因之一是我们可以分析php-fpm的慢执行日志。我们在运维工作中,经常会遇到一个问题,老板或者客户反映网站慢了,要想知道网站慢的原因,先不说java网站,php的网站是有办法查网站慢在哪里,像系统负载高,我们可以用各种工具,如vmstat、iostat、stop等,就能找到是哪个进程导致它负载高,而在这里分析网站慢,是要找出证据证明慢在哪里的