Каталог статей
Скачки загрузки ЦП на сервере HestiaCP ? Полное руководство по оптимизации процесса 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 и спасите свой сервер! 🚀
Надеюсь, статья "Процесс HestiaCP php-fpm потребляет много ресурсов ЦП, как его оптимизировать?", опубликованная в блоге Чен Вэйляна ( https://www.chenweiliang.com/ ), окажется для вас полезной.
Не стесняйтесь делиться ссылкой на эту статью: https://www.chenweiliang.com/cwl-32490.html
