php - PHP-FPM 进程导致 VPS 上 CPU 使用率高
问题描述
几个月前,由于共享托管平台的性能不佳,我们将电子商务网站迁移到了 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 RAM
WHM:Centos 7.8 v86.0.18
电子商务平台:OpenCart 3.0.2.0
解决方案
- FPM 与 CPU 使用率无关,它是您的代码。
- 也就是说,不要在没有合理依据的情况下随意更改工作进程的数量,例如:实际资源统计信息。
- 每天有 300-500 个用户,除非你在做一些奇怪的事情,否则你真的不太可能有 50 个并发请求。
- 我目前工作的高峰期大约有 600 个并发用户和最多 15-20 个连接实际上同时做任何事情。[注:更大/更广泛的支持基础设施]
- 您真的希望每个 CPU 内核能够同时处理 25 个请求吗?
- 你能合理地将 50 个请求的 RAM 放入 4GB 中吗?
- 你对那些每个消耗 10-15MB RAM 的 50 个空闲 PHP 进程感到满意吗?
话虽如此,我们无法告诉您代码中的哪些内容正在消耗资源,而且您不可能发布足够的信息让我们做出比模糊猜测更多的信息。您需要采取措施来衡量资源使用发生的位置,分析您的代码以找出原因,并调整您的基础架构配置以适应您的特定应用程序需求。
没有一种“神奇”的配置适用于所有人。
推荐阅读
- python - pandas filter series with lists of strings as values
- git - 我们如何完全关闭 Azure DevOps 中的工作项?
- javascript - 根据使用 Google Web App 选择的其他两个下拉菜单项填充下拉菜单
- windows - ssh授权成功连接git@github.com后git命令授权失败
- pandas - 在熊猫中生成条件列
- google-data-studio - 这是否可以在 Data Studio 嵌入式报表中创建私有报表过滤
- python - 使用 TensorFlow 和 Cifar10 进行深度学习
- java - 为什么我不能从命令类和主插件类之外的方法分派命令
- linux - 如何使用 GNU find 命令按模式查找文件并按最近修改到最少的顺序列出文件?
- javascript - 使用 vue.js 创建搜索框