深入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中的正规表达式(二)
Oct 09 PHP
php中使用Akismet防止垃圾评论的代码
Jun 10 PHP
PHP图片验证码制作实现分享(全)
May 10 PHP
php上传图片到指定位置路径保存到数据库的具体实现
Dec 30 PHP
体育彩票排列三组选三算法分享
Mar 07 PHP
php将csv文件导入到mysql数据库的方法
Dec 24 PHP
PHP-FPM实现性能优化
Mar 31 PHP
php 截取utf-8格式的字符串实例代码
Oct 30 PHP
php获取flash尺寸详细数据的方法
Nov 12 PHP
redirect_uri参数错误的解决方法(必看)
Feb 16 PHP
PDO::lastInsertId讲解
Jan 29 PHP
解决PHP使用CURL发送GET请求时传递参数的问题
Oct 11 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 adodb介绍
2009/03/19 PHP
PHP中json_encode、json_decode与serialize、unserialize的性能测试分析
2010/06/09 PHP
PHP 利用AJAX获取网页并输出的实现代码(Zjmainstay)
2012/08/31 PHP
PHP中使用php5-ffmpeg撷取视频图片实例
2015/01/07 PHP
PHP 返回13位时间戳的实现代码
2016/05/13 PHP
PHP自定义图片缩放函数实现等比例不失真缩放的方法
2016/08/19 PHP
PHP读取Excel类文件
2017/05/15 PHP
javascript 浏览器判断 绑定事件 arguments 转换数组 数组遍历
2009/07/06 Javascript
给jqGrid数据行添加修改和删除操作链接(之一)
2011/11/04 Javascript
JQuery获取各种宽度、高度(format函数)实例
2013/03/04 Javascript
Extjs 继承Ext.data.Store不起作用原因分析及解决
2013/04/15 Javascript
JS操作数据库的实例代码
2013/10/17 Javascript
Google (Local) Search API的简单使用介绍
2013/11/28 Javascript
nodejs 提示‘xxx’ 不是内部或外部命令解决方法
2014/11/20 NodeJs
JavaScript开发人员的10个关键习惯小结
2014/12/05 Javascript
js获取当前日期前七天的方法
2015/02/28 Javascript
jQuery实现网站添加高亮突出显示效果的方法
2015/06/26 Javascript
Bootstrap的class样式小结
2016/12/01 Javascript
深入理解Vue transition源码分析
2017/07/30 Javascript
微信小程序实现手势滑动效果
2019/08/26 Javascript
python调用java模块SmartXLS和jpype修改excel文件的方法
2015/04/28 Python
Python使用面向对象方式创建线程实现12306售票系统
2015/12/24 Python
使用Python脚本实现批量网站存活检测遇到问题及解决方法
2016/10/11 Python
Python自动生产表情包
2017/03/17 Python
Python实现转换图片背景颜色代码
2020/04/30 Python
基于TensorFlow的CNN实现Mnist手写数字识别
2020/06/17 Python
Jmeter HTTPS接口测试证书导入过程图解
2020/07/22 Python
python操作ini类型配置文件的实例教程
2020/10/30 Python
matplotlib之属性组合包(cycler)的使用
2021/02/24 Python
Kathmandu美国网站:新西兰户外运动品牌
2019/03/23 全球购物
土木工程建筑专业毕业生求职信
2013/10/21 职场文书
财会专业毕业生自荐信
2014/07/09 职场文书
党的群众路线教育实践活动批评与自我批评发言稿
2014/10/16 职场文书
党风廉政建设个人总结
2015/03/06 职场文书
个人业务学习心得体会
2016/01/25 职场文书
JavaScript的Set数据结构详解
2022/02/18 Javascript