Centos

PHP-FPM 在有 16 個執行緒的伺服器上使用 100% CPU

  • March 1, 2021

我有一台具有 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

htop 命令輸出 最佳

執行程序的 PHP-FPM 有 32 個子級。

我會使用pm = static的 php-fpm 設置。根據我的經驗,高流量網站使用 pm 靜態而不是動態/按需更好地工作。

您可以使用以下命令了解 php-fpm 程序使用的記憶體:

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

我會用這樣的東西修改 php-fpm 配置:

pm.max_children = 25
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 10
pm.max_requests = 1000

之後重啟php-fpm!

作為旁注,這是一篇非常有趣的文章,可以解釋很多並指導您找到最佳配置: https ://thisinterestsme.com/php-fpm-settings/

引用自:https://serverfault.com/questions/1055507