深入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性能优化 产生高度优化代码
Jul 22 PHP
PHP session会话的安全性分析
Sep 08 PHP
php之XML转数组函数的详解
Jun 07 PHP
php实现telnet功能示例
Apr 08 PHP
PHP获取当前完整URL地址的函数
Dec 21 PHP
YII Framework框架教程之使用YIIC快速创建YII应用详解
Mar 15 PHP
Mac版PhpStorm之XAMPP整合apache服务器配置的图文教程详解
Oct 13 PHP
PHP与jquery实时显示网站在线人数实例详解
Dec 02 PHP
PHP面向对象之领域模型+数据映射器实例(分析)
Jun 21 PHP
ThinkPHP框架结合Ajax实现用户名校验功能示例
Jul 03 PHP
php实现推荐功能的简单实例
Sep 29 PHP
yii2.0框架场景的简单使用示例
Jan 25 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
ie6 动态缩略图不显示的原因
2009/06/21 PHP
php中将数组转成字符串并保存到数据库中的函数代码
2013/09/29 PHP
PHP获取文件扩展名的方法实例总结
2017/06/10 PHP
PHP设计模式之状态模式定义与用法详解
2018/04/02 PHP
Javascript 获取链接(url)参数的方法
2009/02/15 Javascript
浅谈Javascript面向对象编程
2011/11/15 Javascript
从面试题学习Javascript 面向对象(创建对象)
2012/03/30 Javascript
JavaScript 创建运动框架的实现代码
2013/05/08 Javascript
js每隔5分钟执行一次ajax请求的实现方法
2013/11/27 Javascript
浅谈javascript中的DOM方法
2015/07/16 Javascript
深入浅析NodeJs并发异步的回调处理
2015/12/21 NodeJs
JavaScript数据存储 Cookie篇
2016/07/02 Javascript
谈谈JavaScript的New关键字
2016/08/26 Javascript
jQuery 检查某个元素在页面上是否存在实例代码
2016/10/27 Javascript
浅谈jQuery中的$.extend方法来扩展JSON对象
2017/02/12 Javascript
利用node.js写一个爬取知乎妹纸图的小爬虫
2017/05/03 Javascript
js使用i18n实现页面国际化的方法
2017/05/09 Javascript
jquery获取select选中值的文本,并赋值给另一个输入框的方法
2018/08/21 jQuery
Vue结合后台导入导出Excel问题详解
2019/02/19 Javascript
JS浮点数运算结果不精确的Bug解决
2019/08/01 Javascript
Vue 用Vant实现时间选择器的示例代码
2019/10/25 Javascript
js实现从右往左匀速显示图片(无缝轮播)
2020/06/29 Javascript
python+mysql实现简单的web程序
2014/09/11 Python
Django中几种重定向方法
2015/04/28 Python
python结合selenium获取XX省交通违章数据的实现思路及代码
2016/06/26 Python
Python探索之ModelForm代码详解
2017/10/26 Python
python实现图片识别汽车功能
2018/11/30 Python
PyCharm的设置方法和第一个Python程序的建立
2019/01/16 Python
Python应用领域和就业形势分析总结
2019/05/14 Python
PyCharm安装PyQt5及其工具(Qt Designer、PyUIC、PyRcc)的步骤详解
2020/11/02 Python
税务会计岗位职责
2014/02/18 职场文书
经营目标责任书
2015/05/08 职场文书
歌舞青春观后感
2015/06/10 职场文书
三好学生主要事迹怎么写
2015/11/03 职场文书
经典格言警句:没有热忱,世间便无进步
2019/11/13 职场文书
POST提交数据常见的四种方式
2022/01/18 HTML / CSS