让 PHP-FPM 消耗内存还是消耗 CPU, 这是个问题...

发布于 2022-09-11 15:28:55 字数 375 浏览 11 评论 0

在优化 PHP-FPM 的时候,通常都有两种思路:

  • 根据 CPU 核数来设置 pm.max_children, 如 核数 * 2 + 2,在同等压力的情况下,会将 CPU 拉得很高,超过70%,但内存几乎没有波动。
  • 根据 内存数 来设置 pm.max_children, 如 30M/每进程 * 100个 = 3GB 内存占用,这种情况下,内存会拉得较很高,且随着回收周期规律性波动,但 CPU 几乎没什么太多波动,基本上 10-40%。

从 ab -c 500 -n 100000 的测试结果来看,根据 CPU 核数来配置会快一点点,不是特别明显。如果用内存数来配置,感觉上 CPU 计算资源又被浪费了,心有不甘。

请问各位高手大神有什么建议?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

如此安好 2022-09-18 15:28:55

max_children 设置为 cpu * 2 + 2 肯定是太小的。配合你的每秒500次请求,假设cpu = 4,那么最多就10个fpm进程被创建,100ms一次请求的话,每秒差不多可以接收 (1000/100) * 10 = 100次请求。多出来的要等待master创建进程,自然cpu就上去了。

个人建议根据每天的平均访问量去设置pm.start_servers,至于max_children不能超过总内存的三分之二。如果是专用于web访问的服务器,建议 pm=static。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文