Proces HestiaCP php-fpm zajmuje dużo zasobów CPU. Jak mogę go zoptymalizować?

HestiaCP Skokowe obciążenie procesora serwera? Kompletny przewodnik po optymalizacji procesu PHP-FPM!

Proces HestiaCP php-fpm zajmuje dużo zasobów CPU. Jak mogę go zoptymalizować?

Czy procesor serwera zawsze pracuje na 100%? Wentylator kręci się szaleńczo? Czy szybkość otwierania się witryny spada?Winowajcą może być php-fpm!

Niedawno odkryłem chenweiliang.com Ten pula PHP php-fpm Proces ten intensywnie wykorzystywał procesor, w wyniku czego serwer się zawiesił!

Aby ożywić serwer, wypróbowałem szereg metod optymalizacji i w końcu udało mi się zmniejszyć użycie procesora.

Teraz podzielmy się tym Przewodnik po efektywnej optymalizacji! 🚀

1. Ogranicz liczbę procesów php-fpm

domyślne ustawienia php-fpm mogą无限Proces ten jest tworzony w sposób niekontrolowany, powodując przeciążenie procesora serwera.

Aby to zoptymalizować możemy modyfikować parametry zarządzania procesem.

włączyć php-fpm Pliki konfiguracyjne:

sudo nano /etc/php/*/fpm/pool.d/www.conf
  • *Zmień wersję PHP, np. PHP8.3, i zmień ją na następującą:/etc/php/8.3/fpm/pool.d/www.conf

Zapytanie o wersję PHP ustawioną przez HestiaCP

v-list-web-domain user domain.com

Na przykład:

v-list-web-domain abc chenweiliang.com

Na wyjściu zobaczysz coś takiego:

PHP SUPPORT      yes
PHP MODE        php-fpm
PHP VERSION     8.3

Oznacza to, że witryna korzysta z PHP 8.3.

Znajdź i zmodyfikuj następujące parametry:

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 后自动退出

Następnie uruchom ponownie php-fpm Aby było skuteczne:

sudo systemctl restart php-fpm

效果:Ogranicz liczbę procesów, aby zapobiec nadmiernemu wykorzystaniu zasobów procesora przez php-fpm.

2. Włącz OPCache (aby poprawić wydajność PHP)

PHP analizuje kod ponownie po każdym jego uruchomieniu, co jest marnotrawstwem zasobów.
Rozwiązanie? Włącz OPCache i buforuj swój kod PHP!

编辑 php.ini dokument:

sudo nano /etc/php/*/fpm/php.ini

Dodaj lub zmodyfikuj następujące elementy:

opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
opcache.validate_timestamps=0  # 禁用实时检测,提高性能

Po zapisaniu uruchom ponownie proces PHP:

sudo systemctl restart php8.3-fpm

效果:Zmniejsz konieczność powtarzania analizy kodu PHP, zmniejsz obciążenie procesora i popraw wydajność wykonywania.

3. Ogranicz maksymalny czas wykonywania skryptów PHP

Jeśli skrypt PHP działa zbyt długo, zasoby procesora będą stale zajęte.
Ustawienie rozsądnego okresu limitu czasu może zapobiec zajmowaniu serwera przez „uparte” procesy przez dłuższy czas.

włączyć php.ini dokument:

sudo nano /etc/php/*/fpm/php.ini

Zmodyfikuj następujące parametry:

max_execution_time = 30  # PHP 脚本最多执行 30max_input_time = 30  # 处理输入数据最多 30memory_limit = 256M  # 限制单个 PHP 进程的内存占用

Następnie uruchom ponownie proces PHP:

sudo systemctl restart php-fpm

效果: Zapobiegaj długotrwałemu działaniu procesów PHP i zmniejsz marnotrawstwo zasobów procesora.

4. Sprawdź MySQL Powolne zapytanie

PHP-FPM ma duże obciążenie,Przyczyną może być powolne zapytanie SQL!
开启 MySQL Dziennik powolnych zapytań, znajdź polecenia SQL, które powodują opóźnienia.

Edytuj plik konfiguracyjny MySQL:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

Wysłane:

slow_query_log = 1
slow_query_log_file = /var/log/mysql-slow.log
long_query_time = 1  # 超过 1 秒的查询会被记录

Po zapisaniu uruchom ponownie MySQL:

sudo systemctl restart mysql

Następnie użyj mysqldumpslow Analizuj wolne zapytania:

mysqldumpslow -s c -t 10 /var/log/mysql-slow.log

效果:Znajdź czasochłonne zapytania SQL, zoptymalizuj wydajność bazy danych i pośrednio zmniejsz obciążenie PHP.

5. Ogranicz użycie zasobów Memcached

Patrząc na listę procesów, znalazłem Wykorzystanie procesora przez proces Memcached wynosi 24.8%!
Może się zdarzyć, że przydzielona pamięć podręczna jest zbyt duża, co powoduje, że procesor musi przetworzyć dużą ilość danych.

调整 memcached 配置:

sudo nano /etc/memcached.conf

Przykład:

-m 32  # 限制 Memcached 内存使用 32MB

Następnie uruchom ponownie:

sudo systemctl restart memcached

效果:Zmniejszenie obciążenia procesora przez proces Memcached i poprawa efektywności pamięci podręcznej.

6. Włącz Nginx do buforowania zasobów statycznych

Często PHP przetwarza żądania zawierające dużą liczbę CSS, JS, obrazy, ale te pliki wcale nie wymagają parsowania PHP!
Rozwiązanie? Użyj Nginx do buforowania zasobów statycznych!

Edytuj konfigurację Nginx:

sudo nano /etc/nginx/nginx.conf

Wysłane:

location ~* \.(jpg|jpeg|png|gif|css|js|ico|xml)$ {
    expires max;
    log_not_found off;
}

Po zapisaniu uruchom ponownie Nginx:

sudo systemctl restart nginx

效果:Zmniejsz liczbę operacji PHP na plikach statycznych i zmniejsz użycie procesora.

7. Znajdź skrypt PHP, który wykorzystuje najwięcej procesora

Jeśli po optymalizacji obciążenie procesora nadal jest zbyt wysokie, może to oznaczać, że niektóre skrypty PHP działają nieprawidłowo.
Aby dowiedzieć się, który proces PHP wykorzystuje najwięcej procesora, użyj następującego polecenia:

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

Jeśli zauważysz, że skrypt PHP wykorzystuje zbyt dużo zasobów procesora, możesz go od razu wyłączyć:

kill -9 PID

效果:Dokładnie identyfikuj „zepsute procesy” i zapobiegaj zajmowaniu procesora przez procesy PHP przez dłuższy czas.

Podsumowanie: 7 sposobów na optymalizację PHP-FPM

Ogranicz liczbę procesów PHP-FPM, aby zapobiec przeciążeniu procesora
Włącz OPCache, zmniejsz powtarzające się analizowanie kodu PHP
Ustawianie limitu czasu PHP, aby zapobiec długotrwałej eksploatacji
Sprawdzanie wolnych zapytań MySQL, zoptymalizuj wydajność zapytań do bazy danych
Dostosuj pamięć Memcached, zmniejszając obciążenie procesora
Włącz statyczną pamięć podręczną Nginx, zmniejszając obciążenie analizą składniową PHP
Znajdź skrypty PHP o wysokim wykorzystaniu procesora, precyzyjna optymalizacja

na zakończenie

Optymalizacja serwera jest jak fitness: musisz dokonać precyzyjnych korekt i nie owijać w bawełnę!
Po serii optymalizacji obciążenie procesora mojego serwera spadło z 80% w dół do 15%, strona otwiera się dwa razy szybciej!
Jeśli Twój serwer ma podobne problemy, wypróbuj te metody! 💪

???? Podejmij działanie teraz! Zoptymalizuj PHP-FPM i oszczędź swój serwer! 🚀

发表 评论

Twój adres e-mail nie zostanie opublikowany. 必填 项 已 用 * 标注

Katalog artykułów
Przewiń do góry