PHP-FPM 在具有 16 线程的服务器上使用 100% CPU

Vin*_*ino 3 php centos php-fpm cpu-usage digital-ocean

我有一台具有 32 GB RAM 和 16 个线程的服务器。该服务器有一个 PHP API,可以接收来自其他外部 API 的许多请求,我在 PHP-FPM 中进行了配置以支持所有这些请求,而不会减慢网站速度,这运行良好 1 年,现在请求几乎翻了一番,这离开网站页面速度很慢,需要 5-6 秒才能加载,这是不正常的。也许我必须在 PHP-FPM 中重做一个配置来支持这种新的请求需求,在这种情况下你会怎么做?

我的服务器有 32 GB RAM,但仅使用 2.5 GB,可以吗?是否可以保持 RAM 和 CPU 之间的平衡来提高 CPU 性能还是我在胡说八道?

pm.max_children = 32
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
pm.max_requests = 1000
Run Code Online (Sandbox Code Playgroud)

htop命令输出 顶部

PHP-FPM 有 32 个子进程正在运行。

小智 8

我将使用 php-fpm 设置和pm = static。根据我的经验,高流量网站使用 pm 静态效果比动态/点播效果更好。

您可以使用以下命令了解 php-fpm 进程使用的内存:

ps --no-headers -o "rss,cmd" -C php-fpm | awk '{ sum+=$1 } END { printf ("%d%s\n", sum/NR/1024,"M") }'
Run Code Online (Sandbox Code Playgroud)

我会修改 php-fpm 配置,如下所示:

pm.max_children = 25
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 10
pm.max_requests = 1000
Run Code Online (Sandbox Code Playgroud)

之后重新启动 php-fpm!

作为旁注,这里有一篇非常有趣的文章,可以解释很多内容并指导您找到最佳配置: https: //thisinterestsme.com/php-fpm-settings/