深入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 iconv() : Detected an illegal character in input string
Dec 05 PHP
浏览器预览PHP文件时顶部出现空白影响布局分析原因及解决办法
Jan 11 PHP
PHP读取数据库并按照中文名称进行排序实现代码
Jan 29 PHP
解析在PHP中使用全局变量的几种方法
Jun 24 PHP
php实例分享之mysql数据备份
May 19 PHP
CodeIgniter实现更改view文件夹路径的方法
Jul 04 PHP
php读取mssql的ntext字段返回值为空的解决方法
Dec 30 PHP
PHP错误机制知识汇总
Mar 24 PHP
PHP简单实现记录网站访问量功能示例
Jun 06 PHP
PHP echo()函数讲解
Feb 15 PHP
php的RSA加密解密算法原理与用法分析
Jan 23 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
Feb 21 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生成验证码时“图像因其本身有错无法显示”的解决方法
2013/08/07 PHP
详解PHP的Yii框架中自带的前端资源包的使用
2016/03/31 PHP
PHP框架Laravel插件Pagination实现自定义分页
2020/04/22 PHP
javascript实现的listview效果
2007/04/28 Javascript
基于jquery实现控制经纬度显示地图与卫星
2013/05/20 Javascript
jquery判断元素的子元素是否存在的示例代码
2014/02/04 Javascript
Angular 页面跳转时传参问题
2016/08/01 Javascript
AngularJS 过滤与排序详解及实例代码
2016/09/14 Javascript
省市区三级联动jquery实现代码
2020/04/15 Javascript
Require.JS中的几种define定义方式示例
2017/06/01 Javascript
原生JavaScript实现的简单放大镜效果示例
2018/02/07 Javascript
Vue2.0 实现移动端图片上传功能
2018/05/30 Javascript
vue+axios+element ui 实现全局loading加载示例
2018/09/11 Javascript
javascript面向对象三大特征之封装实例详解
2019/07/24 Javascript
Vue循环中多个input绑定指定v-model实例
2020/08/31 Javascript
JQuery绑定事件四种实现方法解析
2020/12/02 jQuery
[00:33]2018DOTA2亚洲邀请赛TNC出场
2018/04/04 DOTA
python3.4用循环往mysql5.7中写数据并输出的实现方法
2017/06/20 Python
Python如何发布程序的详细教程
2018/10/09 Python
python实现祝福弹窗效果
2019/04/07 Python
Django shell调试models输出的SQL语句方法
2019/08/29 Python
python 利用turtle模块画出没有角的方格
2019/11/23 Python
python 实现二维字典的键值合并等函数
2019/12/06 Python
Python实现微信好友的数据分析
2019/12/16 Python
python中sympy库求常微分方程的用法
2020/04/28 Python
用python计算文件的MD5值
2020/12/23 Python
selenium+python实现基本自动化测试的示例代码
2021/01/27 Python
如何用Python编写一个电子考勤系统
2021/02/08 Python
NARS化妆品官方商店:美国彩妆品牌
2017/08/26 全球购物
教师找工作推荐信
2013/11/23 职场文书
出纳员岗位职责
2014/03/13 职场文书
房屋分割离婚协议书范本
2014/12/01 职场文书
护理专业自我评价
2015/03/11 职场文书
2016年党员公开承诺书范文
2016/03/24 职场文书
Prometheus 监控MySQL使用grafana展示
2021/08/30 MySQL
详解OpenCV获取高动态范围(HDR)成像
2022/04/29 Python