【问题标题】:PHP-FPM processes causing high CPU usage on VPSPHP-FPM 进程导致 VPS 上 CPU 使用率高
【发布时间】:2020-09-16 09:01:17
【问题描述】:

几个月前,由于共享托管平台的性能不佳,我们将电子商务网站迁移到了 VPS。为了处理流量的增加(平均每天 300-500 名访问者),我们调整了 PHP-FPM 设置并将 Max Children 从 5(默认)增加到 50。目前,PHP-FPM“池”进程需要高 CPU 使用率(30-40%)。有什么技巧可以让这些“池”进程使用更少的 CPU?谢谢!

VPS 规格:
2 个 CPU
Intel(R) Xeon(R) CPU E5-2630 v4 @ 2.20GHz
4GB 内存

WHM:Centos 7.8 v86.0.18
电商平台:OpenCart 3.0.2.0

【问题讨论】:

  • 当然,您的主要技巧是“缓存”。而你如何实现缓存取决于你特定的电子商务网站框架。到目前为止,您在这些方面采取了哪些措施?
  • OpenCart 有一个内置的缓存系统,所以我现在没有做任何其他事情。
  • 所以你可以从那里开始,例如从基于文件的缓存更改为内存(将缓存目录挂载到tmpfs 或更改缓存配置以使用apcu)。您的 PHP-FPM 工作进程读取缓存数据的速度越快,它们就可以越早为其他访问者提供服务。此外,我不认为内置缓存系统有什么可提供的。您需要一个完整的页面缓存。要么为这项工作寻找额外的插件,要么寻找 Varnish。

标签: php apache centos vps


【解决方案1】:
  1. FPM 与 CPU 使用率无关,它是您的代码。
  2. 也就是说,不要在没有合理依据的情况下随意更改工作进程的数量,例如:实际资源统计信息。
    • 每天有 300-500 名用户真的不可能有 50 个并发请求,除非你在做一些奇怪的事情。
    • 我目前工作的高峰期大约有 600 个并发用户,最多有 15-20 个连接实际上同时做任何事情。 [注意:更大/更广泛的支持基础设施]
    • 您真的希望每个 CPU 内核同时处理 25 个请求吗?
    • 你能合理地将 50 个请求的 RAM 放入 4GB 中吗?
    • 您对这 50 个空闲的 PHP 进程每个都消耗 10-15MB RAM 感到满意吗?

话虽如此,我们无法告诉您代码中的哪些内容正在耗尽资源,而且您不可能发布足够的信息让我们做出比模糊猜测更多的信息。您需要采取措施衡量资源使用情况,分析您的代码以找出原因,并调整您的基础架构配置以适应您的特定应用程序需求。

没有适合所有人的“神奇”配置。

【讨论】:

    猜你喜欢
    • 2016-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-30
    • 2017-10-09
    • 1970-01-01
    相关资源
    最近更新 更多