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


    12.21 php-fpm的pool

    php-fpm有一个概念叫pool,就是使用psaux看到的右侧的那一列,也就是它的池子,

    如下图,我们在这里只定义了一个pool

    其实他是支持定义多个池子的,每一个池子我们可以监听不同的sock,或者不同的tcpip,这样的话如果我们的nginx有好几个站点每个站点都可以使用不同pool,这样做的好处就是其中一个php502了,其他站点不收影响,(502很有可能是php资源不够了)如果你所有的网站都使用了同一个池子的话,其中一个网站发生了故障,比如程序员写的代码有问题把php资源耗尽了,那么其他几个也会502,所以我们有必要把网站隔离开来,每个站点使用单独的pool。

    添加多个pool方法:

    可以在如上图中的文件中继续添加,如再添加一个叫aming.com的pool就在文件内容后面添加如下一段。

    然后我们检查错误,

    然后重新加载。

    然后我们看一下pool,可以看到右侧多了一个aming.com的pool。

    那么我们怎么使用它呢?

    首先然后,把test.com.conf定义成php-fcgi.sock

    然后把另一个aaa.com.conf定义成aming.sock,(如果里面没有这一段那么就从test.com.conf里拷贝一下)

    这样两个网站就隔离开了。

    当然php-fpm也是支持include,

    然后,之后进入到这个目录里,然后把php-fpm.conf里的www一段剪切到www.conf里,然后再把php-fpm.conf里的aming.com一段剪切到里面。

    然后我们检查错误,

    然后重新加载。这个效果是和第一种一样的。

    12.22 php-fpm慢执行日志

    我们首先

    意思是超过一秒钟就要记录日志(如果在真实场景下我们建议是两秒,应该很多脚本执行都会超过一秒),然后放在第二行的地址里。

    然后检查错误重新加载,之后我们可以看一下这个目录里有没有生成日志文件。有的话我们可以看看里面有没有内容。里面应该是空的,因为我们还没有任何超过一秒的php执行的过程,所以我们需要模拟一个慢执行的php。

    那么我们就来写一个脚本,因为php-fcgi是被test.com用的,所以我们需要在这个站点下做操作。

    我们做一个脚本故意让它执行休眠2秒

    在里面写入我们可以把它分成三行

    然后我们运行一下试试(如果没有任何输出就说明有错误)

    里面有一行我们把它打开后,也就是改成on后,我们就可以在浏览器或者curl里显示错误。然后我们再运行,如下图提示我们语法错误

    这里应该是我们的sleep.php标点符号写的是中文的标点,我们给它改成英文即可,然后我们再次运行,可以看出它执行过程是停顿了两秒的。

    然后我们在看日志

    现在里面就会有内容了,如下图

    第二行告诉我们sleep.php脚本慢了,第三行说是这个脚本的第3行慢了。

    我们可以看一下这个脚本的第三行是什么,如下图正是我们设定的休眠2秒。

    12.23 open_basedir

    open_basedir之前我们也介绍过,如果服务器有多个网站,那么在php.ini里定义就不合适了,所以要么在apache虚拟主机配置文件里定义,要么在php-fpm里定义,那么我们可以针对每一个池子定义open_basedir,

    定义方法只要在www(也可以是其他池子)池子文件里加上,然后另起一行(这里的网站一定要写www这个文件对应的网站,上图并不是标准答案),如在加上它。然后检查错误之后重新加载,然后就可以访问了。

    我们也可以看一下它的错误日志,我们先把改成off关掉,(正常都是关闭的,因为不能让别人通过浏览器看到错误信息)然后我们定义一下错误日志路径,(把原来的注释一下,然后另起一行)

    还要定义日志级别(这里我们定义成所有,我们把原来的注释一下,然后另起一行)

    然后创建一下指定的错误日志路径文件

    然后我们故意把在www.conf里定义的后面的网站改成其他网站

    然后检查错误重新加载,然后访问一下就生成了错误日志,然后我们可以看一下错误日志

    12.24 php-fpm进程管理

    php-fpm进程管理就是php-fpm配置文件里,如www.conf里选中的几行。

    第一行表示你的进程以什么样的形式启动,dynamic是动态,只有是动态的时候下面的全部参数才生效,如果改成static那么只有下面一条生效,也就是说启动的时候就一下生成50个。

    dynamic动态时,下面20结尾的一行意思是默认启动20个,请求多的时候会增多,但是空闲的时候多于35会自动减少,下面5结尾的一行意思是最低不少于5个,500的一行意思是每一个子进程处理的请求数是500次,达到这个值就会自动退出。

    当然这些参数后面的数字都是可以改的。

    我们可以改一下,然后重新加载php-fpm,然后可以查看一下网站的进程数:

  • 相关阅读:
    ISSCC 2017论文导读 Session 14:ENVISION: A 0.26-to-10 TOPS/W Subword-Parallel DVAFS CNN Processor in 28nm
    ISSCC 2017论文导读 Session 14: A 28nm SoC with a 1.2GHz Prediction Sparse Deep-Neural-Network Engine
    ISSCC 2017论文导读 Session 14 Deep Learning Processors,DNPU: An 8.1TOPS/W Reconfigurable CNN-RNN
    ISSCC 2017论文导读 Session 14 Deep Learning Processors,A 2.9TOPS/W Deep Convolutional Neural Network
    深度学习方法(九):自然语言处理中的Attention Model注意力模型
    深度学习方法(八):自然语言处理中的Encoder-Decoder模型,基本Sequence to Sequence模型
    720P、1080P、4K是什么意思?
    《微微一笑很倾城》中肖奈大神说的平方根倒数速算法是什么鬼?三十分钟理解!
    转载为什么写技术博客对新人如此重要
    三十分钟理解博弈论“纳什均衡” -- Nash Equilibrium
  • 原文地址:https://www.cnblogs.com/pta188/p/9180629.html
Copyright © 2020-2023  润新知