gpt4 book ai didi

php - nginx php-fpm 配置达到 child 限制

转载 作者:行者123 更新时间:2023-12-04 02:08:02 25 4
gpt4 key购买 nike

我在使用 nginx + php7.0-fpm 时遇到了这个问题。

测试是在没有安装其他服务的纯 php 服务器上完成的。

我收到以下警告。

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 35 total children

而且它会大大降低服务器速度。

我正在使用 AWS t2.medium 实例 - 2vCPU 和 4GB RAM。

我的 php7.0-fpm/www.conf 设置看起来像

pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 10
pm.max_spare_servers = 20
pm.max_requests = 500

我有一个用于测试的 Laravel 应用程序,它简单地回复 {"m":"OK"} 请求。

我使用 apache2-utils 测试了它

ab -n 1000 -c 50 https://mytestserver.com/

ab 测试的响应 -> https://ghostbin.com/paste/528tw

我使用 htop 观察 CPU 使用情况。

ab 测试中,两个 CPU 使用率很快达到 100%。但是,内存使用量仅为 400MB

为什么会占用太多CPU?我该怎么做才能从 php-fpm 收到警告?

我做错了什么?请指导我。

谢谢。

最佳答案

您可能不仅要考虑 PHP 的内存使用情况,还要考虑并发 CPU 使用情况。

如果你有太多的子服务器,它只会让事情变得更糟和更慢,PHP 无法处理更多的请求,它可以完全阻止一切。

您的服务器的内存对于只有 2 个 vCPU 来说有点太多,或者换句话说,它应该有更多的 CPU 来适应内存量。

这更适合 2 个虚拟 cpu 内核:

pm = dynamic
pm.max_children = 4
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 2
pm.max_requests = 500

此外,当您使用 Apache 的基准测试工具执行 50 个并发请求时,只有 2 个 vCPU 服务器非常慢是完全正常的。基准测试应从不同的计算机运行。

请记住,基本操作系统和您的网络服务器 (nginx) 也需要一些 CPU 使用率。

您的 AWS 服务器的功能与 RaspberryPi 大致相同,但内存稍多一些。

来自 Mjh 的有用评论:

100 requests a second isn't bad, if you get to a point where you have that much - that's a great problem to have. Dropping SSL in favor for requests per seconds might not be the best thing to do at this point. Of course, I don't know anything about your site and what you use it for, or whether SSL is needed or not, but having SSL does have an impact on your google ranking. It's always min-maxing, and in case of SSL, if I were you, I'd keep it.

关于php - nginx php-fpm 配置达到 child 限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41571861/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com