深入php-fpm的两种进程管理模式详解


Posted in PHP onJune 03, 2013

php-fpm的两种进程管理模式
php-fpm的进程数也是可以根据设置分为动态和静态的。
一种是直接开启指定数量的php-fpm进程,不再增加或者减少;
另一种则是开始的时候开启一定数量的php-fpm进程,当请求量变大的时候,动态的增加php-fpm进程数到上限,当空闲的时候自动释放空闲的进程数到一个下限。
这两种不同的执行方式,可以根据服务器的实际需求来进行调整。
这里先说一下涉及到这个的几个参数吧,他们分别是pm、pm.max_children、pm.start_servers、pm.min_spare_servers和pm.max_spare_servers。
pm表示使用那种方式,有两个值可以选择,就是static(静态)或者dynamic(动态)。
在更老一些的版本中,dynamic被称作apache-like。这个要注意看配置文件给出的说明了。PHP5.3
php-fpm的默认静态处理方式会使得php-cgi的进程长期占用内存而无法释放,这也是导致nginx出错的原因之 一,因此可以将php-fpm的处理方式改成apache模式。
下面4个参数的意思分别为:
    pm.max_children:静态方式下开启的php-fpm进程数量。
    pm.start_servers:动态方式下的起始php-fpm进程数量。
    pm.min_spare_servers:动态方式下的最小php-fpm进程数量。
    pm.max_spare_servers:动态方式下的最大php-fpm进程数量。
如果dm设置为static,那么其实只有pm.max_children这个参数生效。系统会开启设置的数量个php-fpm进程。

如果dm设置为dynamic,那么pm.max_children参数失效,后面3个参数生效。系统会在php-fpm运行开始的时候启动 pm.start_servers个php-fpm进程,然后根据系统的需求动态在pm.min_spare_servers和 pm.max_spare_servers之间调整php-fpm进程数。

那么,对于我们的服务器,选择哪种执行方式比较好呢?事实上,跟Apache一样,我们运行的PHP程序在执行完成后,或多或少会有内存泄露的问题。

这也是为什么开始的时候一个php-fpm进程只占用3M左右内存,运行一段时间后就会上升到20-30M的原因了。所以,动态方式因为会结束掉多余的进程,可以回收释放一些内存,所以推荐在内存较少的服务器或者VPS上使用。具体最大数量根据 内存/20M 得到。比如说512M的VPS,建议pm.max_spare_servers设置为20。至于pm.min_spare_servers,则建议根据服务器的负载情况来设置,比较合适的值在5~10之间。

然后对于比较大内存的服务器来说,设置为静态的话会提高效率。因为频繁开关php-fpm进程也会有时滞,所以内存够大的情况下开静态效果会更好。数量也可以根据内存/30M 得到。比如说2GB内存的服务器,可以设置为50;4GB内存可以设置为100等。

PHP 相关文章推荐
php array_merge下进行数组合并的代码
Jul 22 PHP
php 缓存函数代码
Aug 27 PHP
PHP array_push 数组函数
Dec 26 PHP
过滤掉PHP数组中的重复值的实现代码
Jul 17 PHP
PHP面向对象法则
Feb 23 PHP
基于PHP开发中的安全防范知识详解
Jun 06 PHP
thinkphp 一个页面使用2次分页的实现方法
Jul 15 PHP
php共享内存段示例分享
Jan 20 PHP
windows7下安装php的imagick和imagemagick扩展教程
Jul 04 PHP
php+xml实现在线英文词典之添加词条的方法
Jan 23 PHP
Yii+upload实现AJAX上传图片的方法
Jul 13 PHP
php实例化一个类的具体方法
Sep 19 PHP
PHP 异步执行方法,模拟多线程的应用分析
Jun 03 #PHP
基于PHP异步执行的常用方式详解
Jun 03 #PHP
php生成二维码的几种方式整理及使用实例
Jun 03 #PHP
深入PHP异步执行的详解
Jun 03 #PHP
php实现自动获取生成文章主题关键词功能的深入分析
Jun 03 #PHP
基于MySQL到MongoDB简易对照表的详解
Jun 03 #PHP
PHP Error与Logging函数的深入理解
Jun 03 #PHP
You might like
用PHP 4.2书写安全的脚本
2006/10/09 PHP
桌面中心(三)修改数据库
2006/10/09 PHP
destoon利用Rewrite规则设置网站安全
2014/06/21 PHP
PHP错误机制知识汇总
2016/03/24 PHP
JS的递增/递减运算符和带操作的赋值运算符的等价式
2007/12/08 Javascript
JavaScript学习笔记(十)
2010/01/17 Javascript
JavaScript实现两个Table固定表头根据页面大小自行调整
2014/01/03 Javascript
JS+CSS实现Li列表隔行换色效果的方法
2015/02/16 Javascript
jQuery插件开发精品教程让你的jQuery提升一个台阶
2016/01/27 Javascript
BootStrap实现树形目录组件代码详解
2016/06/21 Javascript
移动端使用localStorage缓存Js和css文的方法(web开发)
2016/09/20 Javascript
angular中的http拦截器Interceptors的实现
2017/02/21 Javascript
以BootStrap Tab为例写一个前端组件
2017/07/25 Javascript
nodejs实现超简单生成二维码的方法
2018/03/17 NodeJs
bootstrap select2插件用ajax来获取和显示数据的实例
2018/08/09 Javascript
js实现延迟加载的几种方法详解
2019/01/19 Javascript
JS监听组合按键思路及实现过程
2020/04/17 Javascript
element-ui点击查看大图的方法示例
2020/12/14 Javascript
vue-router路由懒加载及实现的3种方式
2021/02/28 Vue.js
python将ip地址转换成整数的方法
2015/03/17 Python
Python Requests安装与简单运用
2016/04/07 Python
Python使用logging结合decorator模式实现优化日志输出的方法
2016/04/16 Python
Python中MySQL数据迁移到MongoDB脚本的方法
2016/04/28 Python
使用Selenium破解新浪微博的四宫格验证码
2018/10/19 Python
python之线程通过信号pyqtSignal刷新ui的方法
2019/01/11 Python
Python一行代码实现快速排序的方法
2019/04/30 Python
python3+PyQt5 实现Rich文本的行编辑方法
2019/06/17 Python
欧缇丽美国官网:Caudalie美国
2016/12/31 全球购物
DeinDesign德国:设计自己的手机壳
2019/12/14 全球购物
Bonprix法国:时尚、鞋子、家居
2020/12/29 全球购物
文明青少年标兵事迹材料
2014/01/28 职场文书
幼儿园安全生产月活动总结
2014/07/05 职场文书
公司财务会计主管应聘求职信
2014/09/26 职场文书
安全员岗位职责范本
2015/04/11 职场文书
环保宣传语大全
2015/07/13 职场文书
MySQL如何快速创建800w条测试数据表
2022/03/17 MySQL