12.21 php-fpm的pool 12.22 php-fpm慢执行日志 12.23 open_basedir 12.24 php-fpm进程管理

php-fpm配置

和LAMP不同的是,在LNMP架构中,php-fpm作为独立的一个服务存在。既然是独立的服务,那么它必然有自己的配置文件。php-fpm的配置文件为/usr/local/php-fpm/etc/php-fpm.conf,它同样也支持include语句,类似于nginx.conf里面的include。

php-fpm的pool

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

www pool,可以继续写其他pool

添加一个aming.com  pool,并检查有没有语法错误

[root@lizhipenglinux01 etc]# /usr/local/php-fpm/sbin/php-fpm -t
[17-Mar-2018 19:37:34] NOTICE: configuration file /usr/local/php-fpm/etc/php-fpm.conf test is successful                没有语法错误,reload一下

[root@lizhipenglinux01 etc]# /etc/init.d/php-fpm reload
Reload service php-fpm done

[root@lizhipenglinux01 etc]# ps aux |grep php-fpm

有两个不同的池子。下面该如何使用它们

下面对php-fpm.conf做一个更改

添加第一个框里面的内容,剪切掉2,3框里面的内容,分别编写aming.conf和www.conf

 

这样就有两个子配置文件,也就是说有两个pool了,第一个pool监听了/tmp/www.sock,第二个pool监听了/tmp/aming.sock。这样,就可以在Nginx不同的虚拟主机中调用不同的pool,从而达到相互隔离的目的,两个pool互不影响。下面来验证配置是否有问题:

[root@lizhipenglinux01 php-fpm.d]# /usr/local/php-fpm/sbin/php-fpm -t
[17-Mar-2018 20:42:06] NOTICE: configuration file /usr/local/php-fpm/etc/php-fpm.conf test is successful

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

Gracefully shutting down php-fpm . done
Starting php-fpm done
[root@lizhipenglinux01 php-fpm.d]# ps aux|grep php-fpm

 

通过php-fpm的慢执行日志,可以非常清晰地了解到PHP的脚本哪里执行时间长,它可以定位到具体的行

第三行故意休眠2秒

php脚本有问题,打开开关

[root@lizhipenglinux01 php-fpm.d]# vi /usr/local/php-fpm/etc/php.ini

 

open_basedir的目的就是安全。httpd可以针对每个虚拟主机设置一个open_basedir,php-fpm同样也可以针对不同的pool设置不同的open_basedir。

第一框是test.com在使用,但是第二框却定义的aming.com,有出入,会报错。这只是验证一下

改回正确的路径

[root@lizhipenglinux01 php-fpm.d]# vi /usr/local/php-fpm/etc/php.ini      修改的目的是定义错误日志

 这样错误信息不会再浏览器上显示,要把错误信息记录在服务器上的某一个文件里

日志级别定义成all所有,注释掉框里面的。在把test.com改错,改成aming.com

查看错误日志定义的地址

[root@lizhipenglinux01 php-fpm.d]# ls /usr/local/php-fpm/var/log/php_errors.log     没有这个路径或者文件,下面去生成
ls: 无法访问/usr/local/php-fpm/var/log/php_errors.log: 没有那个文件或目录

 

[root@lizhipenglinux01 php-fpm.d]# /etc/init.d/php-fpm restart
Gracefully shutting down php-fpm . done
Starting php-fpm done

404,然后去查看错误日志信息

第一行,定义php-fpm的子进程启动模式,dynamic为动态模式;一开始只启动少量的子进程,根据实际需求,动态地增加或者减少子进程,最多不会超过pm.max_children定义的数值。另外一种模式为static,这种模式下子进程数量有pm.max_children决定,一次性启动这么多,不会减少也不会增加。

pm.start_servers针对dynamic模式,它定义php-fpm服务在启动服务时产生的子进程数量。pm.min_spare_servers针对dynamic模式,它定义在空闲时段子进程数的最少数量,如果达到这个数量时,php-fpm服务会自动派生新的子进程。pm.max_spare_servers也是针对dynamic模式的它定义在空闲时段子进程数的最大值,如果高于这个数值就开始清理空闲的子进程。pm_max_request针对dynamic模式,它定义一个子进程最多处理的请求数,也就是说在一个php-fpm的子进程中最多可以处理这么多请求,当达到这个数值时,它会自动退出。

 分号注释,改成static模式,一下子开启50个

 dynamic模式,默认20个

原文地址:https://www.cnblogs.com/sisul/p/8590356.html