一、php-fpm的pool
1、Nginx 可以配置多个虚拟主机,php-fpm同样也支持配置多个pool,每个pool 可以监听一个端口或一个socket.
2、编辑配置文件:
1)第一种方法,在php-fpm.conf中添加pool: 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
[www]
listen = /tmp/php-fcgi.sock
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
[aming]
listen = /tmp/aming.sock
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
2)第二种方法,单独创建配置文件:
a) 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
b)创建php-fpm.d目录,在创建独立的pool文件 vim /etc/php-fpm.d/www.conf 和aming.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
[aming]
listen = /tmp/aming.sock
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
二、php-fpm的慢执行日志
1、编辑配置文件 www.conf
[www]
listen = /tmp/php-fcgi.sock
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
request_slowlog_timeout = 2
slowlog = /usr/local/php-fpm/var/log/www-slow.log
2、测试
1)编辑测试脚本 sleep.php
<?php
echo "test slow log";
sleep(3);
echo "down";
?>
3)测试
如何直接将错误信息显示出来,编辑 vim /usr/local/php-fpm/etc/php.ini,修改如下地方 on:
如下图,错误信息直接显示出来了。根据错误信息修改脚本。
查看日志,记录了那个脚本慢,哪一行慢。
三、open_basedir
1、编辑配置文件 vim /usr/local/php-fpm/etc/php-fpm.d/www.conf,增加以下内容:
php_admin_value[open_basedir]=/data/testnginx/test.com/:tmp
2、修改 vim /usr/local/php-fpm/etc/php.ini 配置文件
关闭display,定义日志存放的地方和日志级别。
3、测试
1)首先创建日志文件,并给与777权限
[root@localhost log]# touch php_error.log
[root@localhost log]# chmod 777 php_error.log
2)在www.conf文件中定义一个错误路径,查看日志。
从错误日志可以看出,配置文件中是只允许访问aming.com和wwwtest.com的,而我们访问的是test.com.
3)修改为正确的路径,可以正常访问
四、php-fpm进程管理
www.conf中部分参数的含义:
pm = dynamic php-fpm的子进程的启动模式,dynamic为动态模式,还有static模式,如果为static模式,只有pm.max_children会生效,其他参数不起作用。
pm.max_children = 50 最大子进程数,如果为static模式,则进程数由pm.max_children
pm.start_servers = 20 启动服务时会启动的进程数
pm.min_spare_servers = 5 定义在空闲时段子进程的最少数量,如果达到这个数值,自动派生新的子进程
pm.max_spare_servers = 35 定义在空闲时段子进程的最大数量,如果达到这个数值,自动清理空闲子进程
pm.max_requests = 500 定义一个子进程最多处理的请求数,也就是说一个php-fpm的子进程最多可以处理这么多请求,当达到这个数值时,他会自动退出。