PHP-FPM 无法创建足够的子项并停止提供请求

PHP-FPM 无法创建足够的子项并停止提供请求

我是 PHP-FPM 的新手,我注意到它有时会随机锁定。

[26-Dec-2014 22:50:16] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 32 children, there are 0 idle, and 921 total children
[26-Dec-2014 22:50:17] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 32 children, there are 0 idle, and 931 total children
[26-Dec-2014 22:50:18] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 32 children, there are 0 idle, and 941 total children
[26-Dec-2014 22:50:19] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 32 children, there are 0 idle, and 951 total children
[26-Dec-2014 22:50:20] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 32 children, there are 0 idle, and 961 total children
[26-Dec-2014 22:50:21] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 32 children, there are 0 idle, and 971 total children
[26-Dec-2014 22:50:22] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 32 children, there are 0 idle, and 981 total children
[26-Dec-2014 22:50:23] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 32 children, there are 0 idle, and 991 total children
[26-Dec-2014 22:50:24] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 32 children, there are 0 idle, and 1001 total children
[26-Dec-2014 22:50:25] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 32 children, there are 0 idle, and 1011 total children
[26-Dec-2014 22:50:26] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 32 children, there are 0 idle, and 1021 total children
[26-Dec-2014 22:50:27] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 32 children, there are 9 idle, and 1031 total children

这种情况似乎是随机发生的(我们网站每分钟可能有 50 人或 200 人),当它发生时,PHP-FPM 停止提供请求(通过查看上面似乎无法满足需求)

即使我重新启动 PHP-FPM,它仍会被锁定一小段时间。

[26-Dec-2014 22:52:41] NOTICE: Terminating ...
[26-Dec-2014 22:52:41] NOTICE: exiting, bye-bye!
[26-Dec-2014 22:52:41] NOTICE: fpm is running, pid 17484
[26-Dec-2014 22:52:41] NOTICE: ready to handle connections
[26-Dec-2014 22:53:15] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 8 children, there are 0 idle, and 53 total children
[26-Dec-2014 22:53:16] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 16 children, there are 0 idle, and 61 total children
[26-Dec-2014 22:53:17] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 32 children, there are 0 idle, and 71 total children
[26-Dec-2014 22:53:18] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 32 children, there are 0 idle, and 81 total children
[26-Dec-2014 22:57:01] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 8 children, there are 0 idle, and 109 total children
[26-Dec-2014 22:58:09] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 8 children, there are 0 idle, and 124 total children
[26-Dec-2014 22:58:10] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 16 children, there are 0 idle, and 132 total children
[26-Dec-2014 22:58:11] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 32 children, there are 0 idle, and 142 total children
[26-Dec-2014 22:58:12] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 32 children, there are 0 idle, and 152 total children
[26-Dec-2014 22:58:13] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 32 children, there are 0 idle, and 162 total children
[26-Dec-2014 22:58:14] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 32 children, there are 0 idle, and 172 total children
[26-Dec-2014 22:58:15] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 32 children, there are 0 idle, and 182 total children
[26-Dec-2014 22:58:16] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 32 children, there are 0 idle, and 192 total children
[26-Dec-2014 22:58:17] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 32 children, there are 0 idle, and 202 total children

这是我的设置

pm.max_children = 2000
pm.start_servers = 20
pm.min_spare_servers = 10
pm.max_spare_servers = 200
pm.max_requests = 500

我也尝试过这些

pm.max_children = 2000
pm.start_servers = 20
pm.min_spare_servers = 20
pm.max_spare_servers = 50
pm.max_requests = 500

以及其他一些组合,但仍然看到问题。

服务器为 32 核,64GB 内存。使用 Apache 和 FastCGI

谢谢

答案1

尝试这个:

注意:仅当 pm 设置为“动态”时使用

pm.start_servers = min_spare_servers + (max_spare_servers - min_spare_servers) / 2

pm = dynamic
pm.max_children = 500
pm.start_servers = 60
pm.min_spare_servers = 20
pm.max_spare_servers = 100
pm.max_requests = 10000; 

或者像这样:

pm = ondemand
pm.max_children = 500
pm.max_requests = 10000

无论如何您都需要使用缓存。

相关内容