我正在尝试调整我的服务器的 php-fpm 安装,但我不知道该如何处理pm.start_servers
、pm.min_spare_servers
和pm.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.
设置这些选项时请考虑以下事项:
- 您的平均请求时间是多长?
- 该网站的最大同时访客数量是多少?
- 每个子进程平均消耗多少内存?