zoukankan      html  css  js  c++  java
  • PHP-FPM的三种模式和worker进程、master进程详解

    一:首先介绍PHP-FPM 的三种模式

    首先看php配置文件中的说明。

    (1)pm=static
      始终保持固定数量的worker进程数,由pm.max_children决定,不会动态扩容。

      配置项要求

      1、pm.max_children> 0 必须配置,且只有这一个参数生效

      优缺点

      如果配置成static,只需要考虑max_children的数量,数量取决于cpu的个数和应用的响应时间,

    (2)pm=dynamic

      php-fpm启动时,会初始启动一些worker,初始启动worker数决定于pm.max_children的值。在运行过程中动态调整worker数量,worker的数量受限于pm.max_children配置,同时受限全局配置process.max。
      1秒定时器作用,检查空闲worker数量,按照一定策略动态调整worker数量,增加或减少。增加时,worker最大数量<=max_children· <=全局process.max;减少时,只有idle >pm.max_spare_servers时才会关闭一个空闲worker。

      优缺点
      优点:动态扩容,不浪费系统资源
      缺点:如果所有worker都在工作,新的请求到来只能等待master在1秒定时器内再新建一个worker,这时可能最长等待1s


    (3)pm=ondemand

      php-fpm启动的时候,不会启动任何一个worker,而是按需启动,只有当连接过来的时候才会启动。
      启动的最大worker数决定于pm.max_children的值,同时受限全局配置process.max。
      1秒定时器作用,如果空闲worker时间超过pm.process_idle_timeout的值(默认值为10s),则关闭该worker。这个机制可能会关闭所有的worker。

      优缺点
      优点:按流量需求创建,不浪费系统资源
      缺点:由于php-fpm是短连接的,所以每次请求都会先建立连接,频繁的创建worker会浪费系统开销。,所以,在大流量的系统上,master进程会变得繁忙,占用系统cpu资源,不适合大流量环境的部署。

    pm模式设置在/etc/php-fpm.d文件中
    可以看到php7.0的默认pm值为dynamic,pm.max_children值为5

     一个master进程,2个worker进程

    worker进程、master进程详解

    master只是负责监听管理工作,并不是很多人认为的把客户端发来的请求分给worker进程处理,而是由worker进程负责客户端的请求监听和处理

     可以看到一旦kill掉worker进程后,会重启一个新的worker进程。因此客户端请求肯定会得到响应处理。master进程负责监听子进程的状态,子进程挂掉之后,会发信号给master进程,然后master进程重新启一个新的worker进程。

  • 相关阅读:
    禁止页面全选复制IE,Opera,Mozilla Firefox,Google Chrome,Safari,Flock等主流浏览器测试成功
    Create virtual keyboard using C# Winform Application
    C# 获取Windows语言类型(两种方式)
    Javascript在ASP.NET中的用法:计算还剩余输入多少个字符
    IE和firefox通用的复制到剪贴板的JS函数,Opera测试不成功!
    什么是数据的表分区(文章附上Server 2005分区实施方案)
    JavaScript创建的可编辑表格
    关于ASP.NET页面打印技术的总结
    错误:该行已经属于另一个表
    安装IE7后测试IE6环境的解决办法_IE6Standalone
  • 原文地址:https://www.cnblogs.com/xs-yqz/p/13194318.html
Copyright © 2011-2022 走看看