深入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和ACCESS写聊天室(九)
Oct 09 PHP
PHP 巧用数组降低程序的时间复杂度
Jan 01 PHP
php开发文档 会员收费1期
Aug 14 PHP
php检测图片木马多进制编程实践
Apr 11 PHP
php函数serialize()与unserialize()用法实例
Nov 06 PHP
php生成圆角图片的方法
Apr 07 PHP
PHP判断字符串长度的两种方法很实用
Sep 22 PHP
PHP根据session与cookie用户登录状态操作类的代码
May 13 PHP
图文详解PHP环境搭建教程
Jul 16 PHP
PHP不使用内置函数实现字符串转整型的方法示例
Jul 03 PHP
php封装db类连接sqlite3数据库的方法实例
Dec 19 PHP
tp5(thinkPHP5框架)使用DB实现批量删除功能示例
May 28 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框架codeigniter中如何使用框架的session
2013/06/24 PHP
许愿墙中用到的函数
2006/10/07 Javascript
开发跨浏览器javascript常见注意事项
2009/01/01 Javascript
jquery attr 设定src中含有&(宏)符号问题的解决方法
2011/07/26 Javascript
表头固定(利用jquery实现原理介绍)
2012/11/08 Javascript
TypeScript 学习笔记之基本类型
2015/06/19 Javascript
基于Bootstrap的后台管理面板 Bootstrap Metro Dashboard
2016/06/17 Javascript
网页挂马方式整理及详细介绍
2016/11/03 Javascript
Bootstrap的基本应用要点浅析
2016/12/19 Javascript
NodeJS实现图片上传代码(Express)
2017/06/30 NodeJs
JS实现仿UC浏览器前进后退效果的实例代码
2017/07/17 Javascript
微信小程序倒计时功能实例代码
2018/07/17 Javascript
vue axios请求频繁时取消上一次请求的方法
2018/11/10 Javascript
vue从一个页面跳转到另一个页面并携带参数的解决方法
2019/08/12 Javascript
Typescript3.9 常用新特性一览(推荐)
2020/05/14 Javascript
[00:53]TI3正赛第三天 DK怒破A队不败金身 现场国旗飘扬热血激昂
2013/08/10 DOTA
Python实现提取文章摘要的方法
2015/04/21 Python
python定时检查某个进程是否已经关闭的方法
2015/05/20 Python
Python利用正则表达式实现计算器算法思路解析
2018/04/25 Python
将Dataframe数据转化为ndarry数据的方法
2018/06/28 Python
Python 排序最长英文单词链(列表中前一个单词末字母是下一个单词的首字母)
2020/12/14 Python
美国网上购买眼镜:Eyeconic
2017/07/29 全球购物
租租车:国际租车、美国租车、欧洲租车、特价预订国外租车(中文服务)
2018/03/28 全球购物
Calzedonia美国官网:意大利风格袜子、打底裤和沙滩装
2018/07/19 全球购物
美国领先的男士和女士内衣购物网站:Freshpair
2019/02/25 全球购物
prAna官网:瑜伽、旅行和冒险服装
2019/03/10 全球购物
be2台湾单身男女交友:全球网路婚姻介绍的领导品牌
2019/10/11 全球购物
总务岗位职责
2013/11/19 职场文书
个人自我鉴定写法
2013/11/30 职场文书
中国央视网签名寄语
2014/01/18 职场文书
班主任个人工作反思
2014/04/28 职场文书
史上最牛的辞职信
2015/02/28 职场文书
2015小学语文教师个人工作总结
2015/05/20 职场文书
2016年秋季运动会通讯稿
2015/11/25 职场文书
各国货币符号大全
2022/02/17 杂记
Redis全局ID生成器的实现
2022/06/05 Redis