Процесът HestiaCP php-fpm заема много ресурси на процесора. Как мога да го оптимизирам?

HestiaCP Скок на процесора на сървъра? Пълно ръководство за оптимизиране на 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 скрипта, който използва най-много CPU

Ако процесорът все още е твърде висок след оптимизацията, може да се окаже, че някои PHP скриптове работят безумно.
Използвайте следната команда, за да разберете PHP процеса с най-голямо използване на процесора:

ps -eo pid,user,pcpu,pmem,args --sort=-pcpu | grep php

Ако установите, че PHP скрипт заема твърде много CPU, можете да го убиете директно:

kill -9 PID

ефект:Идентифицирайте точно "лошите ябълки" и попречете на PHP процеса да заеме процесора за дълго време.

Резюме: 7 начина за оптимизиране на PHP-FPM

Ограничете броя на PHP-FPM процесите, за да предотвратите претоварване на процесора
Активирайте OPCache, намалява многократното анализиране на PHP код
Задаване на таймаут на PHP, за предотвратяване на продължителна работа
Проверка на MySQL бавни заявки, оптимизирайте производителността на заявките към базата данни
Настройте Memcached паметта, намалявайки натоварването на процесора
Активирайте статичния кеш на Nginx, намалявайки натоварването на PHP анализирането
Намерете PHP скриптове с високо натоварване на процесора, прецизна оптимизация

в заключение

Оптимизацията на сървъра е като фитнес, трябва да правите прецизни настройки и да не се забърквате!
След поредица от оптимизации натоварването на процесора на моя сървър спадна от 80% надолу до 15%, сайтът се отваря двойно по-бързо!
Ако вашият сървър има подобни проблеми, опитайте тези методи! 💪

👉 Вземете мерки сега! Оптимизирайте вашия PHP-FPM и спасете вашия сървър! ????

Блог на Hope Chen Weiliang ( https://www.chenweiliang.com/ ) сподели „Процесът HestiaCP php-fpm заема много ресурси на процесора, как да го оптимизирам? “, може да ви е полезно.

Добре дошли да споделите връзката към тази статия:https://www.chenweiliang.com/cwl-32490.html

За да отключите още скрити трикове🔑, заповядайте в нашия Telegram канал!

Споделете и харесайте, ако ви харесва! Вашите споделяния и харесвания са нашата постоянна мотивация!

 

发表 评论

Вашият имейл адрес няма да бъде публикуван. Използват се задължителните полета * Етикет

Справочник на статиите
Преминете към Top