Jak zapobiec konsumowaniu zbyt dużej ilości pamięci RAM w Linux
- 4154
- 78
- Klaudia Woś
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).
$ SpojrzenieSpojrzenie - 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.