深入php-fpm的两种进程管理模式详解

 更新时间:2013年06月03日 15:39:29   作者:  
本篇文章是对php-fpm的两种进程管理模式进行了详细的分析介绍,需要的朋友参考下
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生成指定长度随机数最简洁的方法

    这篇文章主要介绍了PHP生成指定长度随机数最简洁的方法,一行代码搞定随机数生成,是不是最简洁、最优雅的方法,需要的朋友可以参考下
    2014-07-07
  • ThinkPHP实现更新数据实例详解(demo)

    ThinkPHP实现更新数据实例详解(demo)

    本文给大家介绍thinkphp实现更新数据的实例详解以及thinkphp更新数据库的五种方法,本文介绍的非常不错,具有参考借鉴价值,感兴趣的朋友可以参考下
    2016-06-06
  • php去除数组中重复数据

    php去除数组中重复数据

    去除数组中的重复数据,又叫排重,本文给出的函数和php原生array_unique的区别在于array_unique要求是字符串,而本函数可以是数组和对象
    2014-11-11
  • php中smarty区域循环的方法

    php中smarty区域循环的方法

    这篇文章主要介绍了php中smarty区域循环的方法,实例分析了smarty中foreach循环与section循环的使用技巧,需要的朋友可以参考下
    2015-06-06
  • PHP和MYSQL实现分页导航思路详解

    PHP和MYSQL实现分页导航思路详解

    这篇文章主要介绍了PHP和MYSQL实现分页导航思路详解,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-04-04
  • PHP函数引用返回的实例详解

    PHP函数引用返回的实例详解

    其实PHP函数引用与php中变量引用一样,都使用的是&符号了,那么今天我们就一起来看看函数的引用返回的一些例子,有需要的朋友们可以参考借鉴,下面来一起看看吧。
    2016-09-09
  • php 伪造HTTP_REFERER页面URL来源的三种方法

    php 伪造HTTP_REFERER页面URL来源的三种方法

    这篇文章主要介绍了php 伪造HTTP_REFERER页面URL来源的三种方法的相关资料,需要的朋友可以参考下
    2016-09-09
  • ThinkPHP3.2框架使用addAll()批量插入数据的方法

    ThinkPHP3.2框架使用addAll()批量插入数据的方法

    这篇文章主要介绍了ThinkPHP3.2框架使用addAll()批量插入数据的方法,结合实例形式分析了thinkPHP针对单条数据插入及批量数据插入操作的相关实现技巧,需要的朋友可以参考下
    2017-03-03
  • 浅析echo(),print(),print_r(),return之间的区别

    浅析echo(),print(),print_r(),return之间的区别

    这篇文章主要是对echo(),print(),print_r(),return之间的区别进行了详细的分析介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2013-11-11
  • PHP strstr函数原型源码分析

    PHP strstr函数原型源码分析

    这篇文章主要为大家介绍了PHP strstr函数原型源码分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06

最新评论