【问题标题】:Meaning of PHP_FCGI_CHILDREN and max-procs in Lighttpd and Fastcgi configurationLighttpd 和 Fastcgi 配置中 PHP_FCGI_CHILDREN 和 max-procs 的含义
【发布时间】:2016-10-12 19:07:52
【问题描述】:

fastcgi配置中有4个字段,max-procs, max-load-per-proc, PHP_FCGI_CHILDREN,PHP_FCGI_MAX_REQUESTS :

fastcgi.server = ( ".php" =>
  (( "socket" => "/tmp/php-fastcgi.socket",
     "bin-path" => "/usr/local/bin/php",
     "max-procs" => "2",
     "bin-environment" => ( 
                           "PHP_FCGI_CHILDREN" => "3",
                           "PHP_FCGI_MAX_REQUESTS" => "10000" )
   ))
)
  • 由于 fastcgi.server 中只有 1 个条目,因此将有 1 个 Fastcgi 后端。
  • 由于 PHP_FCGI_CHILDREN =3 且 max-procs=2,“/usr/local/bin/php”进程数将为 2*(3+1)=7。
  • 由于max-procs=2,在服务器状态下,会有fastcgi.backend.0.0和fastcgi.backend.0.1的状态

因此,将有 1 个带有 2 个进程的 fastcgi 后端。这些进程接受负载。

我不明白以下内容:

  1. PHP_FCGI_CHILDREN的意义是什么?
  2. 请求是由 PHP_FCGI_CHILDREN 还是由 proc 处理?
  3. 哪个参数决定了 1 个 proc 的最大负载?它的默认值是多少?
  4. proc 的最大负载是否与 PHP_FCGI_MAX_REQUESTS 有任何关系?
  5. 如果 PHP_FCGI_CHILDREN=0 会发生什么?有人提到 max-proc = 观察者的数量和 max-proc*PHP_FCGI_CHILDREN = 工人的数量。这是什么意思?
  6. 什么时候说 proc 被重载了?

【问题讨论】:

    标签: php server fastcgi lighttpd mod-fastcgi


    【解决方案1】:

    希望这有助于了解情况

    这个答案的其余部分的一点背景:

    “主”进程是一个生成的进程。这能够与它的孩子共享它的所有资源[比如内存]。但是它不处理 php 请求,将其视为实际请求处理程序的容器

    “子”进程是实际处理 php 请求的进程。这反过来也是影响“主”进程负载量的一个非常重要的因素。

    这里的一般策略应该是最小化“主”进程的数量并最大化“子”进程的数量,同时保持稳定性,因为子进程将与其兄弟姐妹共享 opcache、内存空间和系统资源。

    1. PHP_FCGI_CHILDREN = 一个“主”进程可以产生的子进程数量。
    2. 请求由PHP_FCGI_CHILDREN处理
    3. PHP_FCGI_CHILDREN,默认为1,如果设置为另一个值,总是给你指定的数字加1[所以如果你指定为1它加1,所以它会变成2 ]
    4. 是的
    5. 如果您设置PHP_FCGI_CHILDREN=0,每个“主”进程将仅生成 1 个子进程
    6. 当一个 proc 无法处理更多请求时,它会过载 [由于缺乏资源] 这非常依赖于系统/环境,所以很抱歉在这里如此模糊

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-22
      • 2012-02-21
      相关资源
      最近更新 更多