Каталог статей
- 1 1. Ограничьте количество процессов php-fpm
- 2 2. Включите OPCache (для повышения производительности PHP)
- 3 3. Ограничьте максимальное время выполнения PHP-скриптов
- 4 4. Проверьте медленные запросы MySQL
- 5 5. Ограничьте использование ресурсов Memcached
- 6 6. Включите Nginx для кэширования статических ресурсов
- 7 7. Найдите PHP-скрипт, который использует больше всего ресурсов ЦП.
- 8 Резюме: 7 способов оптимизации PHP-FPM
- 9 вывод
ГестияCP Скачок загрузки ЦП сервера? Полное руководство по оптимизации процесса PHP-FPM!

Всегда ли процессор сервера загружен на 100%? Вентилятор вращается слишком быстро? Скорость открытия сайта замедляется?Причиной может быть php-fpm!
Я недавно обнаружил chenweiliang.com Этот PHP-пул php-fpm Процесс безумно пожирал ресурсы процессора, и сервер рухнул!
Чтобы оживить сервер, я перепробовал ряд методов оптимизации и наконец добился снижения загрузки ЦП.
Теперь давайте поделимся этим Эффективное руководство по оптимизации! 🚀
1. Ограничьте количество процессов php-fpm
Настройки php-fpm по умолчанию могут无限Процесс создается неконтролируемо, что приводит к перегрузке ЦП сервера.
Для его оптимизации мы можем изменить параметры управления процессом.
открытый php-fpm Файлы конфигурации:
sudo nano /etc/php/*/fpm/pool.d/www.conf
- *Измените версию PHP на вашу, например PHP8.3, и измените ее на следующую:
/etc/php/8.3/fpm/pool.d/www.conf
Запросить версию PHP, установленную HestiaCP
v-list-web-domain user domain.com
Например:
v-list-web-domain abc chenweiliang.com
В выводе вы увидите что-то вроде:
PHP SUPPORT yes
PHP MODE php-fpm
PHP VERSION 8.3
Это означает, что сайт использует PHP 8.3.
Найдите и измените следующие параметры:
pm = dynamic
pm.max_children = 16 ; 根据服务器资源调整,建议值:CPU 核心数 × 2
pm.start_servers = 4 ; 初始进程数,建议设为 max_children × 25%
pm.min_spare_servers = 2 ; 最小空闲进程数
pm.max_spare_servers = 7 ; 最大空闲进程数
pm.max_requests = 3000 ; 每个子进程处理完 3000 个请求后自动重启
pm.process_idle_timeout = 10s ; 空闲进程 10s 后自动退出
Затем перезагрузитесь. php-fpm Чтобы сделать это эффективным:
sudo systemctl restart php-fpm
✅ эффект: Ограничьте количество процессов, чтобы предотвратить чрезмерное потребление ресурсов ЦП php-fpm.
2. Включите OPCache (для повышения производительности PHP)
PHP перерабатывает код каждый раз при его выполнении, что является пустой тратой ресурсов.
Решение? Включите OPCache и кэшируйте свой PHP-код!
编辑 php.ini 文件 :
sudo nano /etc/php/*/fpm/php.ini
Добавьте или измените следующее:
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
opcache.validate_timestamps=0 # 禁用实时检测,提高性能
После сохранения перезапустите процесс PHP:
sudo systemctl restart php8.3-fpm
✅ эффект: Уменьшение повторного синтаксического анализа PHP-кода, снижение нагрузки на ЦП и повышение эффективности выполнения.
3. Ограничьте максимальное время выполнения PHP-скриптов
Если PHP-скрипт выполняется слишком долго, ресурсы ЦП будут постоянно заняты.
Установка разумного периода ожидания может предотвратить длительное занятие сервера «упрямыми» процессами.
открытый php.ini 文件 :
sudo nano /etc/php/*/fpm/php.ini
Измените следующие параметры:
max_execution_time = 30 # PHP 脚本最多执行 30 秒
max_input_time = 30 # 处理输入数据最多 30 秒
memory_limit = 256M # 限制单个 PHP 进程的内存占用
Затем перезапустите процесс PHP:
sudo systemctl restart php-fpm
✅ эффект: Предотвращает длительную работу PHP-процессов и сокращает трату ресурсов ЦП.
4. Проверить MySQL Медленный запрос
PHP-FPM имеет высокую нагрузку,Это может быть вызвано медленным SQL-запросом!
开启 MySQL Журнал медленных запросов, выясните, какие SQL-операторы сдерживают работу.
Отредактируйте файл конфигурации MySQL:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Ответ:
slow_query_log = 1
slow_query_log_file = /var/log/mysql-slow.log
long_query_time = 1 # 超过 1 秒的查询会被记录
После сохранения перезапустите MySQL:
sudo systemctl restart mysql
Тогда используйте mysqldumpslow Анализ медленных запросов:
mysqldumpslow -s c -t 10 /var/log/mysql-slow.log
✅ эффект: Найдите трудоемкие SQL-запросы, оптимизируйте производительность базы данных и косвенно уменьшите нагрузку на PHP.
5. Ограничьте использование ресурсов Memcached
Просматривая список процессов, я обнаружил Загрузка ЦП процессом Memcached составляет 24.8%!
Возможно, выделен слишком большой объем кэш-памяти, из-за чего ЦП приходится обрабатывать большой объем данных.
调整 memcached Конфигурация:
sudo nano /etc/memcached.conf
修改:
-m 32 # 限制 Memcached 内存使用 32MB
Затем перезагрузитесь:
sudo systemctl restart memcached
✅ эффект: Уменьшите нагрузку на ЦП процесса Memcached и повысьте эффективность кэширования.
6. Включите Nginx для кэширования статических ресурсов
PHP часто обрабатывает запросы, содержащие большое количество CSS, JS, изображения, но эти файлы вообще не нуждаются в PHP-парсинге!
Решение? Используйте Nginx для кэширования статических ресурсов!
Изменить конфигурацию Nginx:
sudo nano /etc/nginx/nginx.conf
Ответ:
location ~* \.(jpg|jpeg|png|gif|css|js|ico|xml)$ {
expires max;
log_not_found off;
}
После сохранения перезапустите Nginx:
sudo systemctl restart nginx
✅ эффект: Сократите количество обработок статических файлов PHP и уменьшите загрузку ЦП.
7. Найдите PHP-скрипт, который использует больше всего ресурсов ЦП.
Если после оптимизации загрузка ЦП все еще слишком высока, возможно, некоторые PHP-скрипты работают некорректно.
Используйте следующую команду, чтобы узнать процесс PHP с самой высокой загрузкой ЦП:
ps -eo pid,user,pcpu,pmem,args --sort=-pcpu | grep php
Если вы обнаружили, что PHP-скрипт потребляет слишком много ресурсов процессора, вы можете завершить его напрямую:
kill -9 PID
✅ эффект:Точно распознает «плохие яблоки» и не позволяет процессу PHP долго занимать ресурсы ЦП.
Резюме: 7 способов оптимизации PHP-FPM
✅ Ограничьте количество процессов PHP-FPM, чтобы предотвратить перегрузку процессора
✅ Включить OPCache, уменьшите повторный разбор PHP-кода
✅ Установка тайм-аута PHP, чтобы предотвратить длительную эксплуатацию
✅ Проверка медленных запросов MySQL, оптимизировать производительность запросов к базе данных
✅ Настройте память Memcached, уменьшая нагрузку на ЦП
✅ Включить статический кэш Nginx, уменьшая нагрузку на парсинг PHP
✅ Найдите PHP-скрипты с высокой загрузкой ЦП, точная оптимизация
вывод
Оптимизация сервера — это как фитнес: нужно вносить точные коррективы и не тратить время попусту!
После серии оптимизаций загрузка ЦП моего сервера снизилась с 80% до 15%, сайт открывается в два раза быстрее!
Если на вашем сервере возникли похожие проблемы, попробуйте эти методы! 💪
👉 Действуйте сейчас! Оптимизируйте свой PHP-FPM и спасите свой сервер! 🚀
Блог Хоуп Чен Вейлян ( https://www.chenweiliang.com/ ) поделился "Процесс HestiaCP php-fpm потребляет много ресурсов процессора, как его оптимизировать? », это может быть вам полезно.
Добро пожаловать, чтобы поделиться ссылкой на эту статью:https://www.chenweiliang.com/cwl-32490.html
