• 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个

  • 相关阅读:
    VS 2008 和 .NET 3.5 Beta 2 发布了
    搭建.NET 3.0环境
    Expression Studio和Silverlight学习资源、安装问题汇总
    Discuz! NT官方社区
    VS2005中ajax安装指南[转]
    IT人 不要一辈子靠技术生存(转)
    Discuz!NT2.5发布 正式版同步开源
    VS2005下开发Silverlight 1.1翻译加补充
    自动化测试案例
    [原]JavaScript必备知识系列开篇
  • 原文地址:https://www.cnblogs.com/sisul/p/8590356.html
Copyright © 2020-2023  润新知