我们能为您提供什么帮助?

搜索我们的指南和教程,或浏览下方分类。

Apache vs. PHP-FPM Bottleneck with Child Processes

53 次浏览 Markdown

Overview

Apache servers that use the prefork MPM with fewer server instances than the maximum number of PHP-FPM child processes may experience performance issues. This document explains how to resolve these dependency issues.

Important:

This issue and solution only apply to servers that run Apache’s prefork MPM.

The issue

In the following scenario, the PHP-FPM server’s configuration allows a maximum of 20 PHP-FPM child processes and the Apache server’s configuration allows five server instances.

The following example represents the PHP-FPM server’s configuration file:

1
2
3
_is_present: 1
pm_max_children: 20
pm_max_requests: 20

The following example represents the Apache server’s configuration file:

1
2
3
4
5
StartServers: 5
<IfModule prefork.c>
MinSpareServers: 10
MaxSpareServers: 10
</IfModule>

If the Apache server receives 20 requests, it immediately passes ten of those requests to the available PHP-FPM child processes. After PHP-FPM processes those requests, Apache will pass another ten requests to PHP-FPM.

Warning:

For high-volume servers, this configuration can cause severe performance issues.

The solution

To solve this issue, you must configure Apache to allow enough server instances to handle the maximum number of PHP-FPM child processes. To do this, configure the following options in WHM’s Global Configuration interface (WHM >> Home >> Service Configuration >> Global Configuration):

  • Minimum Spare Servers

  • Maximum Spare Servers

  • Max Request Workers

Set these options to a value greater than or equal to the pm_max_children setting in the PHP-FPM server’s configuration file.

这对您有帮助吗?

感谢您的反馈!

仍需帮助?

如果上述内容未能解答您的问题,我们的支持团队全天候为您服务。