HestiaCP PHP-FPM jest mocno obciążony? Błąd dynamicznej strony internetowej 500? Ta optymalizacja zacznie obowiązywać natychmiast!

Czy kiedykolwiek spotkałeś się z podobną sytuacją?Dostęp do witryny nagle zwolnił, a nawet spowodował błąd 500. Po ponownym uruchomieniu PHP-FPM wszystko wróciło do normy., ale problem pojawia się ponownie po pewnym czasie? To jest takie frustrujące!

Dlaczego to się dzieje?W rzeczywistości tak jest zazwyczajPula procesów PHP-FPM nie jest poprawnie skonfigurowana lub zasoby serwera są niewystarczające.spowodowane przez. Dzisiaj dokładnie zoptymalizujemy HestiaCP Dzięki PHP-FPM strona jest stabilna jak skała!

Główny powód, dla którego PHP-FPM jest przeciążony

PHP-FPM toMenedżer Procesów, który odpowiada za obsługę żądań dynamicznych. Jeżeli konfiguracja nie jest rozsądna, może to doprowadzić do:

  • Zasoby serwera są wyczerpanepowodując, że PHP-FPM nie jest w stanie odpowiadać na nowe żądania w odpowiednim czasie;
  • Za mało procesów, gdy ruch nagle wzrasta, nie można go obsłużyć na czas;
  • Wykorzystanie procesu jest zbyt wysokiepowodując gwałtowny wzrost obciążenia procesora.

HestiaCP PHP-FPM jest mocno obciążony? Błąd dynamicznej strony internetowej 500? Ta optymalizacja zacznie obowiązywać natychmiast!

Jak stwierdzić czy PHP-FPM jest przeciążony?

można używać tophtop Polecenie umożliwiające wyświetlenie użycia procesora i pamięci:

top -c

Jeżeli widzisz informacje o procesie podobne do poniższych, oznacza to, że PHP-FPM działa przy dużym obciążeniu:

1669293 abc     20   0  790284 227880 185568 R  73.1   0.9   1:30.09 php-fpm: pool chenweiliang.com                                                    
1669522 abc     20   0  801924 224224 170236 R  69.9   0.9   0:59.01 php-fpm: pool chenweiliang.com

Widzisz, że te procesy zajmują ponad 70% mocy procesora? Jeżeli zdarza się to często, Twój PHP-FPM Musi być jakiś problem!

W jaki więc sposób możemy zoptymalizować konfigurację PHP-FPM, aby serwer nie był już przeciążony?

Optymalizacja puli procesów PHP-FPM (dopasowanie podstawowych parametrów)

Po pierwsze, otwórz 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.

Przyjrzyjmy się konfiguracji PHP-FPM:

[chenweiliang.com]
listen = /run/php/php8.3-fpm-chenweiliang.com.sock
listen.owner = abc
listen.group = www-data
listen.mode = 0660

user = abc
group = abc

pm = ondemand
pm.max_children = 8
pm.max_requests = 4000
pm.process_idle_timeout = 10s

Możesz zobaczyć, że twoje pm Ten używany jest ondemand,Mimo że może to ograniczyć wykorzystanie zasobów w czasie bezczynności, gdy ruch nagle wzrośnie, proces może nie zdążyć zareagować na czas., co powoduje błąd 500.

1. Dostosuj parametry puli procesów PHP-FPM

Jeśli konfiguracja wykorzystuje dynamicJest to metoda wstępnego uruchomienia niektórych procesów roboczych i dynamicznego dostosowywania ich do ilości żądań, co pozwala na szybszą reakcję w przypadku nagłego wzrostu ilości żądań.

W przypadku witryn o pewnym natężeniu ruchu zaleca się korzystanie z pm = dynamicPonieważ może utrzymać pewną liczbę bezczynnych procesów i uniknąć 500 błędów przy dużej współbieżności.

Zaleca się korzystanie z tej opcji wyłącznie w przypadku, gdy rozmiar dostępnej pamięci jest wyjątkowo niski i zasoby pamięci są ograniczone. pm = ondemand Aby oszczędzać zasoby.

Sugerowano zmianę na ondemandi optymalizuj pm.max_children I inne 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 后自动退出

Dlaczego chcesz to tak zmienić?

  • pm = dynamic: Przydzielaj procesy w sposób bardziej elastyczny, aby uniknąć oczekiwania na żądanie, które może być spowodowane przez żądania;
  • pm.max_children = 16:Zapobiegnij 500 błędom spowodowanym przez zbyt małą liczbę procesów;
  • pm.start_servers = 5: Unikaj powolnego uruchamiania procesów;
  • pm.max_requests = 3000:Zapobieganie wyciekom pamięci, regularnie powtarzaj ten proces.

2. Ogranicz czas wykonywania skryptów PHP, aby zapobiec ich długotrwałemu zajęciu

request_terminate_timeout = 30s  ; 超过 30s 的 PHP 脚本自动终止
php_admin_value[memory_limit] = 128M  ; 限制 PHP 进程最大内存占用

To może zapobiec niektórymSkrypty PHP wykorzystujące zbyt dużo procesora mogą spowodować awarię serwera.

Po zapisaniu uruchom ponownie proces PHP:

sudo systemctl restart php8.3-fpm

Włącz monitorowanie stanu PHP-FPM, aby śledzić postęp w dowolnym momencie

Włącz monitorowanie procesów PHP-FPM i przeglądaj je w dowolnym momencieAktualna liczba aktywnych procesów i status oczekiwania na żądanie, aby uniknąć przeciążenia serwera.

php-fpm.conf Dodano w:

pm.status_path = /status

Następnie konfiguracja Nginx:

location /status {
    fastcgi_pass unix:/run/php/php8.3-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    allow 127.0.0.1;
    deny all;
}

W ten sposób możesz http://yourdomain.com/status Sprawdź PHP-FPM w akcji!

Zoptymalizuj dzienniki PHP-FPM, aby szybko rozwiązywać problemy

php-fpm.conf Wysłane:

php_admin_value[error_log] = /var/log/php-fpm/error.log
php_admin_value[log_errors] = On
php_admin_value[error_reporting] = E_ALL
slowlog = /var/log/php-fpm/slow.log
request_slowlog_timeout = 5s  ; 执行超过 5s 的脚本记录到日志

W ten sposób, kiedykolwiek wystąpi błąd 500, możesz bezpośrednio wyświetlić dziennik:

tail -f /var/log/php-fpm/error.log

Sprawdź, czy PHP zgłasza błąd, taki jak out of memory,script execution timeout 等.

Regularnie restartuj PHP-FPM, aby zapobiec wyciekom pamięci

w stanie przejść cron Regularnie restartuj PHP-FPM, aby zapobiec powodowaniu problemów przez długotrwałe procesy.Wycieki pamięci.

crontab -e

Dodaj następujące zadanie zaplanowane, aby automatycznie ponownie uruchamiać PHP-FPM o godzinie 3 w nocy każdego dnia:

0 3 * * * /usr/sbin/service php8.3-fpm restart

A co jeśli problem będzie się powtarzał? Dalsza optymalizacja!

Jeśli nadal będziesz stosować powyższą optymalizacjęCzasami występują błędy 500, możesz kontynuować następujące optymalizacje:

1. Włącz OPcache, aby zwiększyć wydajność wykonywania PHP

Jeśli OPcache nie jest jeszcze włączony, możesz zainstalować go w następujący sposób (na przykładzie Ubuntu):

sudo apt install php8.3-opcache -y

Następnie edytuj php.ini:

opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=4000
opcache.validate_timestamps=1

Efekt? Szybkość wykonywania stron PHP została znacznie zwiększona!

2. Optymalizacja konfiguracji Nginx

Upewnij się, że parametry związane z Nginx są rozsądne, takie jak: fastcgi_read_timeout Dostosuj to odpowiednio, aby uniknąć zakończenia działania skryptów PHP przez Nginx z powodu długiego czasu wykonywania:

fastcgi_read_timeout 60s;
client_max_body_size 100M;

Podsumowanie: Zoptymalizuj PHP-FPM, a strona internetowa nie będzie się już zawieszać!

Jakie zmiany wprowadziliśmy po tej optymalizacji?

✅ Optymalizacja puli procesów PHP-FPM,posługiwać się ondemandI optymalizuj pm.max_children parametr;
Ograniczenie czasu wykonywania skryptów PHP, aby zapobiec długotrwałemu zajęciu procesora;
Włącz monitorowanie PHP-FPM, przeglądaj obciążenie procesu w czasie rzeczywistym;
Optymalizacja logów PHP-FPM, szybko rozwiąż 500 błędów;
Regularnie restartuj PHP-FPM, zapobiegaj wyciekom pamięci;
Włącz OPcache, poprawić wydajność wykonywania PHP;
Optymalizacja konfiguracji Nginx, aby uniknąć problemów z przekroczeniem limitu czasu.

Po tej optymalizacji obciążenie PHP-FPM będzie znacznie zmniejszone, a działanie witryny będzie bardziej stabilne! 🔥

Spróbuj teraz! 💪🚀

Nadzieja Chen Weiliang Blog ( https://www.chenweiliang.com/ ) udostępnił(a) informację „Obciążenie HestiaCP PHP-FPM jest zbyt duże? Błąd dynamicznej strony internetowej 500? Ta optymalizacja zacznie obowiązywać natychmiast! ”, może Ci się to przydać.

Zapraszamy do udostępnienia linku do tego artykułu:https://www.chenweiliang.com/cwl-32512.html

Aby odblokować więcej ukrytych sztuczek🔑, zapraszamy do dołączenia do naszego kanału Telegram!

Udostępnij i polub jeśli Ci się podoba! Twoje udostępnienia i polubienia są naszą ciągłą motywacją!

 

发表 评论

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

Przewiń do góry