针对 PHP-FPM pm.max_children、PHP-FPM pm.start_servers 和其他的建议

针对 PHP-FPM pm.max_children、PHP-FPM pm.start_servers 和其他的建议

我有以下服务器:

Intel® Xeon® E3-1270 v2 Single Processor - Quad Core Dedicated Server
CPU Speed: 4 x 3.5 Ghz w/ 8MB Smart Cache
Motherboard: SuperMicro X9SCM-F
Total Cores: 4 Cores + 8 Threads
RAM: 32 GB DDR3 1333 ECC
Hard Drive: 120GB
Smart Cache: 8MB

我正在使用 ubuntu 12.04 - nginx、php、mysql 和 ISPConfig 3。

在 ISPConfig 3 >> 网站设置下:

我有这个默认值:

PHP-FPM pm.max_children = 10
PHP-FPM pm.start_servers = 2
PHP-FPM pm.min_spare_servers = 1
PHP-FPM pm.max_spare_servers = 5
PHP-FPM pm.max_requests = 0

我的问题是上述变量的推荐设置是什么?因为我发现有些使用不同的设置。

答案1

最好的建议是什么?对其进行基准测试!

设置您的应用程序或安装某种 CMS(例如 Drupal,并在使用 Devel 生成大量内容和资料后使用搜索查询对其进行搜索),然后开始使用 Apache bench 或 siege 对其进行搜索。开始摆弄设置。

我个人认为以下是一个很好的起点:

pm = dynamic
pm.max_children = 8
pm.start_servers = 2
pm.min_spare_servers = 2
pm.max_spare_servers = 4

要了解有多少正在运行,请执行ps aux | grep php

答案2

开始是一条评论,但后来变得有点长。

推荐的设置是适合您的设置/流量的正确设置。

在 Linux 上,这个问题比在其他 Unixen 上要小,因为在 Linux 上分叉进程要快得多,但这确实会影响性能。实际上,您需要监视正在运行的 php 进程数并调整参数以尽量减少分叉新实例的需要(尽管可以争论的是,进程中的少量周转会减轻任何内存泄漏的影响)。

让 min_spare_servers 小于 start_servers 没有多大意义。

相关内容