12.21 php-fpm的poolphp
php-fpm有一个概念叫pool,就是使用psaux看到的右侧的那一列,也就是它的池子,nginx
以下图,咱们在这里只定义了一个pool程序员
其实他是支持定义多个池子的,每个池子咱们能够监听不一样的sock,或者不一样的tcpip,这样的话若是咱们的nginx有好几个站点每一个站点均可以使用不一样pool,这样作的好处就是其中一个php502了,其余站点不收影响,(502颇有多是php资源不够了)若是你全部的网站都使用了同一个池子的话,其中一个网站发生了故障,好比程序员写的代码有问题把php资源耗尽了,那么其余几个也会502,因此咱们有必要把网站隔离开来,每一个站点使用单独的pool。apache
添加多个pool方法:浏览器
能够在如上图中的文件中继续添加,如再添加一个叫aming.com的pool就在文件内容后面添加以下一段。服务器
而后咱们检查错误,curl
而后从新加载。tcp
而后咱们看一下pool,能够看到右侧多了一个aming.com的pool。php-fpm
那么咱们怎么使用它呢?网站
首先而后
,把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,而后能够查看一下网站的进程数: