Linux-LNMP-php-fpm

  • php-fpm的pool
  • php-fpm慢执行日志
  • open_basedir
  • php-fpm进程管理

php-fpm的pool
定义多个php-fpm的pool

在/usr/local/php-fpm/etc/php-fpm.conf文件中定义多个pool.每个定义的pool名不一样,每个pool里的监听sock或ip:port应该不一样,在对应的Nginx的虚拟主机中也要修改监听的sock或ip:port.

vim /usr/local/php-fpm/etc/php-fpm.conf //在[global]部分增加
include = etc/php-fpm.d/*.conf
mkdir /usr/local/php-fpm/etc/php-fpm.d/
vim /usr/local/php-fpm/etc/php-fpm.d/analysis.conf
[analysis]
listen = /tmp/analysis-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

php-fpm的慢执行日志

vim /usr/local/php-fpm/etc/php-fpm.d/default.conf  //增加如下两行
request_slowlog_timeout = 1
slowlog = /usr/local/php-fpm/var/log/default-slow.log
grep listen /usr/local/php-fpm/etc/php-fpm.d/default.conf //以下两行是查出的内容
listen = /tmp/php-fcgi.sock
listen.mode = 666
grep fastcgi_pass /usr/local/nginx/conf/vhost/default.conf  //以下是查询得出的结果
fastcgi_pass unix:/tmp/php-fcgi.sock;

添加测试页面

vim /data/wwwroot/default/slow.php //以下是文件内容
<?php
    echo "start";
    sleep(2);
    echo "end";
?>

测试,查日志

 curl -x127.0.0.1:80 www.default.com/slow.php
 cat /usr/local/php-fpm/var/log/default-slow.log  //以下是日志信息
 [02-Mar-2018 10:04:20]  [pool default] pid 49346
script_filename = /data/wwwroot/default/slow.php
[0x00007fc9e507f280] sleep() /data/wwwroot/default/slow.php:3

open_basedir
编辑php[pool]的配置文件

vim /usr/local/php-fpm/etc/php-fpm.d/default.conf  //加入以下内容
php_admin_value[open_basedir]=/data/wwwroot/default:/tmp

重新加载配置文件,再进行测试

/etc/init.d/php-fpm reload 
curl -x127.0.0.1:80 www.default.com/slow.php

定义php-fpm错误日志的存放路径,将php-fpm的pool中定义的open_basedir路径与nginx虚拟主机中定义的不一致,创建错误日志目录并给目录权限为777,刷新配置,检查日志,结果报404,代码如下:

vim /usr/local/php-fpm/etc/php.ini  //搜索error_log,添加以下内容
error_log = /usr/local/php-fpm/var/logs/php_errors.log
mkdir /usr/local/php-fpm/var/logs/
touch /usr/local/php-fpm/var/logs/php_errors.log
chmod 777 /usr/local/php-fpm/var/logs/php_errors.log

Linux-LNMP(pool,php-fpm慢执行日志,进程管理,open_basedir)
Linux-LNMP(pool,php-fpm慢执行日志,进程管理,open_basedir)
Linux-LNMP(pool,php-fpm慢执行日志,进程管理,open_basedir)
Linux-LNMP(pool,php-fpm慢执行日志,进程管理,open_basedir)
将php-fpm的pool的配置文件修改过来,再次访问

vim /usr/local/php-fpm/etc/php-fpm.d/default.conf  //修改open_basedir
/etc/init.d/php-fpm reload
curl -x127.0.0.1:80 www.default.com/slow.php  //以下是访问内容
startend

php-fpm进程管理

pm = dynamic //动态进程管理,也可以是static
pm.max_children = 50 //最大子进程数,ps aux可以查看
pm.start_servers = 20 //启动服务时会启动的进程数
pm.min_spare_servers = 5 //定义在空闲时段,子进程数的最少数量,如果达到这个数值时,php-fpm服务会自动派生新的子进程
pm.max_spare_servers = 35 //定义在空闲时段,子进程数的最大值,如果高于这个数值就开始清理空闲的子进程
pm.max_request = 500 //定义一个子进程最多处理的请求数,也就是说在一个php-fpm的子进程最多可以处理这么多请求,当达到这个数值时,它会自动退出。