深入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 10 PHP
php递归函数中使用return的注意事项
Jan 17 PHP
thinkphp中memcache的用法实例
Nov 29 PHP
php 在线导入mysql大数据程序
Jun 11 PHP
php实现的微信红包算法分析(非官方)
Sep 25 PHP
编写PHP脚本来实现WordPress中评论分页的功能
Dec 10 PHP
PHP文件缓存smarty模板应用实例分析
Feb 26 PHP
PHP数组函数知识汇总
May 12 PHP
YII框架实现自定义第三方扩展操作示例
Apr 26 PHP
Laravel向公共模板赋值方法总结
Jun 25 PHP
laravel 解决路由除了根目录其他都404的问题
Oct 18 PHP
PHP连接MySQL数据库的三种方式实例分析【mysql、mysqli、pdo】
Nov 04 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获取远程图片的两种 CURL方式和sockets方式获取远程图片
2011/11/07 PHP
php判断上传的Excel文件中是否有图片及PHPExcel库认识
2013/01/11 PHP
php图片上传类 附调用方法
2016/05/15 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
2018/02/19 PHP
ExtJS 2.0实用简明教程 之Border区域布局
2009/04/29 Javascript
手机开发必备技巧:javascript及CSS功能代码分享
2015/05/25 Javascript
JQuery中ajax方法访问web服务实例
2015/07/18 Javascript
jQuery实现只允许输入数字和小数点的方法
2016/03/02 Javascript
javascript 定时器工作原理分析
2016/12/03 Javascript
jQuery插件echarts实现的多柱子柱状图效果示例【附demo源码下载】
2017/03/04 Javascript
vue.js利用defineProperty实现数据的双向绑定
2017/04/28 Javascript
BootStrap modal实现拖拽功能
2018/12/01 Javascript
JavaScript实现简单的计算器
2020/01/16 Javascript
[04:26]2014DOTA2西雅图国际邀请赛 总决赛TOPPLAY
2014/07/22 DOTA
[44:01]2018DOTA2亚洲邀请赛3月30日 小组赛B组 EG VS paiN
2018/03/31 DOTA
python中二维阵列的变换实例
2014/10/09 Python
在Python的Django框架中为代码添加注释的方法
2015/07/16 Python
python中解析json格式文件的方法示例
2017/05/03 Python
python绘图模块matplotlib示例详解
2019/07/26 Python
Python爬取视频(其实是一篇福利)过程解析
2019/08/01 Python
pycharm新建Vue项目的方法步骤(图文)
2020/03/04 Python
selenium判断元素是否存在的两种方法小结
2020/12/07 Python
一款利用css3的鼠标经过动画显示详情特效的实例教程
2014/12/29 HTML / CSS
英国马莎百货官网:Marks & Spencer
2016/07/29 全球购物
澳大利亚正品化妆品之家:Cosmetic Capital
2017/07/03 全球购物
澳大利亚UGG工厂直销:Australian Ugg Boots
2017/10/14 全球购物
求职自荐信范文格式
2013/11/29 职场文书
发展部经理职责规定
2014/02/22 职场文书
促销活动方案模板
2014/02/24 职场文书
家庭聚会祝酒词
2015/08/11 职场文书
有关花店创业的计划书模板
2019/08/27 职场文书
Django利用AJAX技术实现博文实时搜索
2021/05/06 Python
浅谈mysql执行过程以及顺序
2021/05/12 MySQL
利用Python多线程实现图片下载器
2022/03/25 Python
Python循环之while无限迭代
2022/04/30 Python
Linux中sftp常用命令整理
2022/06/28 Servers