无法优化 php5-fpm 以使其正常运行

无法优化 php5-fpm 以使其正常运行

我已经安装了 ngix + php5-fpm。我对此很满意,但我无法优化 php5-fpm 以使其正常运行。每个修复的错误都会产生不同的错误。

首先,我采用了默认设置,但这导致了很多错误:

[04-Jun-2012 03:30:06] WARNING: [pool www] server reached pm.max_children setting (5), consider raising it

我增加了所有数字:

pm.max_children = 15
pm.start_servers = 5
pm.min_spare_servers = 3
pm.max_spare_servers = 5
;pm.max_requests = 500

它导致了不同的错误:

[28-Feb-2013 07:45:06] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 8 children, there are 18 idle, and 28 total children

我再次增加了所有数字:

pm.max_children = 70
pm.start_servers = 20
pm.min_spare_servers = 20
pm.max_spare_servers = 35
;pm.max_requests = 500

这导致日志文件填满以下内容:

[28-Feb-2013 13:21:55] NOTICE: [pool www] child 21868 exited with code 0 after 4171.293476 seconds from start
[28-Feb-2013 13:21:55] NOTICE: [pool www] child 23962 started

我取消了注释:

pm.max_requests = 500

我也遇到了同样的错误,但不是那么频繁——每 5 分钟一次:

[28-Feb-2013 13:21:55] NOTICE: [pool www] child 21868 exited with code 0 after 4171.293476 seconds from start
[28-Feb-2013 13:21:55] NOTICE: [pool www] child 23962 started

我确实又增加了:

pm.max_requests = 1000

现在我每小时会出现 2-3 次此错误,但它仍然存在。

我会再次增加这个数字,但我觉得我的服务器(网站)的运行速度比托管在另一台服务器上的网站慢一点,设置如下:pm.max_children = 15,pm.start_servers = 5, pm.min_spare_servers = 3, pm.max_spare_servers = 5。(可能只是一个网络问题,我不知道)。

我在 Google 和这个网站上搜索过,知道如何计算 pm.max_children(这取决于 RAM)。但我找不到任何有关如何计算的信息:

    pm.start_servers
    pm.min_spare_servers
pm.max_spare_servers
    pm.max_requests

有人可以帮忙吗?

uptime
 13:55:39 up 16:40,  2 users,  load average: 0.13, 0.14, 0.16


free -m
             total       used       free     shared    buffers     cached
Mem:         24101       3783      20318          0        151       3039
-/+ buffers/cache:        592      23509
Swap:         7811          0       7811

我没有对 nginx 配置文件进行任何更改。

答案1

正如日志中所说[NOTICE]:这是信息性的,不是错误. 这些都已标记[ERROR]

简而言之:完全不用担心。这就像你的孩子告诉你他们关掉了厨房的灯。

如果它说[WARNING]这是你应该注意的事情,就像你在第一次回应中通过增加阈值所做的那样。

答案2

将 php-fpm 切换到动态模式。这样 php-fpm 会自动决定何时生成新的子进程。一定有如果你正在使用和类型的操作码缓存,因为强制终止子进程会增加 PHP-APC 中的碎片

相关内容