Процесс HestiaCP php-fpm потребляет много ресурсов процессора. Как его оптимизировать?

ГестияCP Скачок загрузки ЦП сервера? Полное руководство по оптимизации процесса PHP-FPM!

Процесс 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 脚本最多执行 30max_input_time = 30  # 处理输入数据最多 30memory_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

Чтобы раскрыть еще больше скрытых трюков🔑, присоединяйтесь к нашему каналу в Telegram!

Поделитесь и поставьте лайк, если вам понравилось! Ваши репосты и лайки — наша постоянная мотивация!

 

发表 评论

Ваш адрес электронной почты не будет опубликован. 必填 项 已 用 * 标注

Наверх