深入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桌面中心(二) 数据库写入
Mar 11 PHP
PHP网站备份程序代码分享
Jun 10 PHP
PHP中把stdClass Object转array的几个方法
May 08 PHP
PHP根据传来的16进制颜色代码自动改变背景颜色
Jun 13 PHP
ThinkPHP行为扩展Behavior应用实例详解
Jul 22 PHP
PHP中使用循环实现的金字塔图形
Nov 08 PHP
PHP+MYSQL实现用户的增删改查
Mar 24 PHP
php使用post数组的键值创建同名变量并赋值的方法
Apr 03 PHP
微信API接口大全
Apr 15 PHP
详解php设置session(过期、失效、有效期)
Nov 12 PHP
浅析Yii2集成富文本编辑器redactor实例教程
Apr 25 PHP
php写app用的框架整理
Sep 29 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生成Flash动画的实现代码
2010/03/12 PHP
PHP+ajax实现获取新闻数据简单示例
2018/05/08 PHP
Yii框架学习笔记之应用组件操作示例
2019/11/13 PHP
javascript基础之查找元素的详细介绍(访问节点)
2013/07/05 Javascript
Extjs grid panel自带滚动条失效的解决方法
2014/09/11 Javascript
Dojo获取下拉框的文本和值实例代码
2016/05/27 Javascript
jQuery实现下拉菜单的实例代码
2017/06/19 jQuery
JavaScript之Date_动力节点Java学院整理
2017/06/28 Javascript
JavaScript多种页面刷新方法小结
2019/04/04 Javascript
使用 Vue-TCB 快速在 Vue 应用中接入云开发的方法
2020/02/10 Javascript
nodejs使用socket5进行代理请求的实现
2020/02/21 NodeJs
原生js实现瀑布流效果
2020/03/09 Javascript
Vue自定义render统一项目组弹框功能
2020/06/07 Javascript
[03:51]吞吞映像 每周精彩击杀top10第二弹
2014/06/25 DOTA
Python中使用ConfigParser解析ini配置文件实例
2014/08/30 Python
举例讲解Python中的算数运算符的用法
2015/05/13 Python
浅谈python中set使用
2016/06/30 Python
Python函数参数操作详解
2018/08/03 Python
pandas pivot_table() 按日期分多列数据的方法
2018/11/16 Python
PyQt5响应回车事件的方法
2019/06/25 Python
Python List列表对象内置方法实例详解
2019/10/22 Python
Python time库基本使用方法分析
2019/12/13 Python
Anaconda的安装与虚拟环境建立
2020/11/18 Python
python RSA加密的示例
2020/12/09 Python
python中str内置函数用法总结
2020/12/27 Python
HTML5通用接口详解
2016/06/12 HTML / CSS
SISLEY希思黎官方旗舰店:享誉全球的奢华植物美容品牌
2018/04/25 全球购物
Molton Brown美国官网:奢华美容、香水、沐浴和身体护理
2020/09/02 全球购物
恶意软件的定义
2014/11/12 面试题
歌唱比赛获奖感言
2014/01/21 职场文书
庆元旦广播稿
2014/02/10 职场文书
历史学专业求职信
2014/06/19 职场文书
汶川大地震感悟
2015/08/10 职场文书
2016大学迎新晚会开场白
2015/11/24 职场文书
2016年读书月活动总结范文
2016/04/06 职场文书
Nginx如何获取自定义请求header头和URL参数详解
2022/07/23 Servers