Jak zapobiec konsumowaniu zbyt dużej ilości pamięci RAM w Linux

Jak zapobiec konsumowaniu zbyt dużej ilości pamięci RAM w Linux

Jeśli wdrożyłeś LEMP (Linux, Nginx, Mysql/Mariadb, I Php) Ustaw, to prawdopodobnie używasz Fastcgi Proxying wewnątrz Nginx (Jako serwer HTTP), do przetwarzania PHP. PHP-FPM (akronim FastCGI Process Manager) jest szeroko stosowaną i wysokowydajną alternatywą PHP Fastcgi realizacja.

Oto przydatne przewodniki dotyczące konfigurowania Stack Lemp w Linux.

  • Jak zainstalować stos LEMP z phpMyAdmin w Ubuntu 20.04
  • Jak zainstalować serwer LEMP na CentOS 8
  • Jak zainstalować LEMP na serwerze Debian 10

Ostatnio wszystkie nasze Php strony internetowe na jednym z naszych LEMP Serwery internetowe stały się powolne i ostatecznie przestały reagować na logowanie na serwerze. Odkryliśmy, że system działa nisko na pamięci RAM: PHP-FPM zużył większość pamięci RAM, jak wskazano na poniższym zrzucie ekranu (narzędzie do monitorowania systemu).

$ Spojrzenie 
Spojrzenie - narzędzie do monitorowania systemu

W tym artykule pokażemy, jak zapobiec PHP-FPM od konsumpcji zbyt dużej lub całej pamięci systemowej (Baran) w Linux. Na końcu tego przewodnika dowiesz się, jak zmniejszyć PHP-FPM Zużycie pamięci o 50% lub więcej.

Zmniejsz zużycie pamięci PHP-FPM

Po przeprowadzeniu badań w Internecie odkryliśmy, że musimy ponownie skonfigurować PHP-FPM Menedżer procesów i niektóre jego aspekty w celu zmniejszenia zużycia pamięci PHP-FPM w pliku konfiguracyjnym puli.

Domyślna pula to www a jego plik konfiguracyjny znajduje się pod adresem /etc/php-fpm.D/www.conf (NA Centos/Rhel/Fedora) Lub /etc/php/7.4/fpm/basen.D/www.conf (NA Ubuntu/Debian/Mint).

$ sudo vim /etc /php-fpm.D/www.conf [na centos/rhel/fedora] $ sudo vim/etc/php/7.4/fpm/basen.D/www.Conf [on Ubuntu/Debian/Mint] 

Znajdź następujące dyrektywy i ustaw ich wartość, aby pasował do sprawy użycia. W przypadku komentowanych dyrektyw, musisz je polubić.

pm = ondemand PM.max_children = 80 pM.proces_idle_timeout = 10 pm.Max_Requests = 200 

Krótko wyjaśnijmy powyższe dyrektywy i ich wartości. po południu Dyrektywa określa, w jaki sposób kierownik procesu będzie kontrolował liczbę procesów potomnych. Domyślną metodą jest dynamiczny, co oznacza, że ​​liczba dzieci (procesy dziecięce) jest ustawione dynamicznie w zależności od innych dyrektyw, w tym po południu.max_children który określa maksymalną liczbę dzieci, które mogą być żywe w tym samym czasie.

Najbardziej idealnym menedżerem procesów jest na żądanie schemat, w którym nie są tworzone procesy dziecięce w uruchomieniu, ale są odrodzone na żądanie. Procesy dziecięce są rozwidlone tylko wtedy, gdy nowe żądania połączą się na podstawie po południu.max_children I po południu.proces_idle_timeout który określa liczbę sekund, po których zostanie zabity proces bezczynności.

Wreszcie, musimy ustawić po południu.Max_Requests Parametr, który określa liczbę żądań, które każdy proces dziecka powinien wykonać przed ponownym spawaniem. Zauważ, że ten parametr może być również używany jako obejście wycieków pamięci w bibliotekach trzeci.

Odniesienie: Lepszy sposób uruchomienia php-fpm.

Po dokonaniu tych powyższych konfiguracji zauważyłem Baran Użycie jest teraz w porządku na naszym serwerze. Czy masz jakieś przemyślenia do podzielenia się związanymi z tym tematem lub pytaniami? Dotrzyj do nas za pomocą poniższego formularza sprzężenia zwrotnego.