php-fpm:帮助理解 start_servers、min_spare_servers、max_spare_servers

php-fpm:帮助理解 start_servers、min_spare_servers、max_spare_servers

我正在尝试调整我的服务器的 php-fpm 安装,但我不知道该如何处理pm.start_serverspm.min_spare_serverspm.max_spare_servers变量。我正在使用pm = dynamic

pm.max_children非常清楚。每个子进程一次服务 1 个 Web 客户端。好的。那么什么是“服务器”?显然,根据我的默认配置,1 个服务器可以为 1 个以上的子进程提供服务。上限是多少?我应该使用什么作为子进程/服务器的经验法则?或者它们有关系吗?在某些论坛上,有人声称服务器数量应该是 2 x CPU 核心数量,但我见过推荐的配置,其中的数字要高得多,为 40-50。

无论是 PHP 文档还是许多“调整 php-fpm”文章都没有任何帮助。

答案1

dynamic基本上,当您像您一样设置为时,php-fpm 随时运行的进程数是非常可配置的。设置为时,static总是运行的子进程数量不会太多。通常,您可以将其设置为动态以节省资源。每个子进程可以处理一个请求。上限取决于您的 php 应用程序的负载和流量。您还应该计算每个子进程的平均内存消耗,并确保绝不允许子进程的数量超过服务器上安装的 RAM 数量,否则您将开始交换,甚至让内核开始终止进程​​。

; Choose how the process manager will control the number of child processes.
; Possible Values:
;   static  - a fixed number (pm.max_children) of child processes;
;   dynamic - the number of child processes are set dynamically based on the
;             following directives:
;             pm.max_children      - the maximum number of children that can
;                                    be alive at the same time.
;             pm.start_servers     - the number of children created on startup.
;             pm.min_spare_servers - the minimum number of children in 'idle'
;                                    state (waiting to process). If the number
;                                    of 'idle' processes is less than this
;                                    number then some children will be created.
;             pm.max_spare_servers - the maximum number of children in 'idle'
;                                    state (waiting to process). If the number
;                                    of 'idle' processes is greater than this
;                                    number then some children will be killed.
; Note: This value is mandatory.

设置这些选项时请考虑以下事项:

  • 您的平均请求时间是多长?
  • 该网站的最大同时访客数量是多少?
  • 每个子进程平均消耗多少内存?

相关内容