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


12.21 php-fpm的pool
12.22 php-fpm慢执行日志
12.23 open_basedir

12.24 php-fpm进程管理


 php-fpm的pool

Nginx可以配置多个虚拟主机,php-fpm同样也支持配置多个pool,每一个pool可以监听一个端口,也可以监听一个socket,等于把网站分开隔离互不影响,因为当一个网站资源耗尽后,进程就不提供服务了,然而会导致所有网站报错502,让他们进行隔离后可以让他们互相独立,互不影响。一个网站挂了,还有其他网站可以使用。

1.在php-fpm配置文件上再加入一个配置

  • [www1]
    listen = /tmp/php-fcgi1.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           
  • 12.21 php-fpm的pool 12.22 php-fpm慢执行日志 12.23 open_basedir 12.24 php-fpm进程管理
  • 可以看到这个配置文件上有2个pool  ,这样设置就可以区分开了
  • /usr/local/php-fpm/sbin/php-fpm  -t  //检查语法
  • /etc/init.d/php-fpm  restart //重启服务
  • ps aux|grep php-fpm   //查看进程,可以看到下图有个2个进程,分别是www和www1,
  • 12.21 php-fpm的pool 12.22 php-fpm慢执行日志 12.23 open_basedir 12.24 php-fpm进程管理

php-fpm慢执行日志

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

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

2.添加如下内容(在pool下)

    request_slowlog_timeout = 1 //即php脚本执行超过1秒则记录日志

    slowlog = /usr/local/php-fpm/var/log/www-slow.log        //定义慢执行日志的路径和名字

3.
/usr/local/php-fpm/sbin/php-fpm  -t  //检查语法

/etc/init.d/php-fpm  restart //重启服务

4.写一个php脚本  \\脚本2秒执行

    <?php
echo "test slow log";
sleep(2);
echo "done"

?>

5.查看日志

cat www-slow.log 

[13-Jun-2018 20:19:49]  [pool www] pid 2811
script_filename = /data/nginx1/1.php            //影响缓慢的脚本

[0x00007f87210dd1d8] sleep() /data/nginx1/1.php:3  //可以看到PHP脚本第三行是影响的关键

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


open_basedir

隔离其他目录~

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

    添加如下内容

                php_admin_value[open_basedor]=/data/nginx1:/tmp/              //主要这里的路径要跟nginx.conf的目录相同否则会报错

2./etc/init.d/php-fpm  restart  //重启服务

3.测试,

    curl -x127.0.0.1:80 test.com/1.php

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


php-fpm进程管理

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

如果是静态管理,只会剩下pm.max_children这个值()