Centos
PHP-FPM 在有 16 個執行緒的伺服器上使用 100% CPU
我有一台具有 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
執行程序的 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/