GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak zabránit tomu, aby PHP-FPM spotřebovávalo příliš mnoho RAM v Linuxu

Pokud jste nasadili LEMP (Linux , NGINX , MySQL/MariaDB a PHP ), pak pravděpodobně používáte FastCGI proxy v rámci NGINX (jako HTTP server), pro zpracování PHP. PHP-FPM (zkratka FastCGI Process Manager ) je široce používaná a vysoce výkonná alternativa PHP FastCGI implementace.

Zde jsou užitečné průvodce nastavením LEMP Stack v Linuxu.

  • Jak nainstalovat LEMP Stack pomocí PhpMyAdmin v Ubuntu 20.04
  • Jak nainstalovat LEMP Server na CentOS 8
  • Jak nainstalovat LEMP na server Debian 10

V poslední době všechny naše PHP webové stránky na jednom z našich LEMP webové servery se zpomalily a nakonec přestaly reagovat na přihlášení k serveru. zjistili jsme, že v systému dochází RAM:PHP-FPM spotřeboval většinu paměti RAM, jak je uvedeno na následujícím snímku obrazovky (pohledy – nástroj pro monitorování systému).

$ glances

V tomto článku si ukážeme, jak zabránit PHP-FPM příliš mnoho nebo veškerou systémovou paměť (RAM ) v Linuxu. Na konci této příručky se dozvíte, jak snížit PHP-FPM spotřebu paměti o 50 % nebo více.

Snižte využití paměti PHP-FPM

Po nějakém průzkumu na internetu jsme zjistili, že potřebujeme překonfigurovat PHP-FPM správce procesů a některé jeho aspekty, aby se snížila spotřeba paměti PHP-FPM v konfiguračním souboru fondu.

Výchozí fond je www a jeho konfigurační soubor se nachází na adrese /etc/php-fpm.d/www.conf (na CentOS/RHEL/Fedora ) nebo /etc/php/7.4/fpm/pool.d/www.conf (na Ubuntu/Debian/Mint ).

$ sudo vim /etc/php-fpm.d/www.conf             [On CentOS/RHEL/Fedora]
$ sudo vim /etc/php/7.4/fpm/pool.d/www.conf    [On Ubuntu/Debian/Mint]

Najděte následující direktivy a nastavte jejich hodnotu tak, aby vyhovovala vašemu případu použití. U direktiv, které jsou zakomentovány, musíte zrušit komentář.

pm = ondemand
pm.max_children = 80
pm.process_idle_timeout = 10s
pm.max_requests = 200

Pojďme si stručně vysvětlit výše uvedené směrnice a jejich hodnoty. odpoledne směrnice určuje, jak bude správce procesů řídit počet podřízených procesů. Výchozí metoda je dynamická , což znamená, že počet dětí (podřízených procesů) se nastavuje dynamicky v závislosti na některých dalších direktivách včetně pm.max_children který definuje maximální počet dětí, které mohou být současně naživu.

Nejideálnějším procesním manažerem je ondemand schéma, kde se při spuštění nevytvářejí žádné podřízené procesy, ale jsou vytvářeny na vyžádání. Podřízené procesy se rozvětvují pouze tehdy, když se připojí nové požadavky na základě pm.max_children a pm.process_idle_timeout který definuje počet sekund, po kterých bude nečinný proces ukončen.

V neposlední řadě musíme nastavit pm.max_requests parametr, který definuje počet požadavků, které by měl každý podřízený proces provést, než se znovu vytvoří. Upozorňujeme, že tento parametr lze také použít jako řešení pro úniky paměti v knihovnách třetích stran.

Reference :Lepší způsob, jak spustit PHP-FPM.

Po provedení těchto výše uvedených konfigurací jsem si všiml RAM použití je nyní na našem serveru v pořádku. Máte nějaké myšlenky týkající se tohoto tématu nebo otázky, které byste mohli sdílet? Kontaktujte nás prostřednictvím formuláře pro zpětnou vazbu níže.


Ubuntu
  1. Jak vyčistit RAM počítače v Ubuntu a Linux Mint

  2. Linux – Jak spustit bootloader z Linuxu?

  3. Jak zabránit tomu, aby Windows 10 pokaždé poškodil Ext4 Superblock?

  1. Jak zabránit tomu, aby systém přestal reagovat při mlácení (mimo Ram)?

  2. Jak zabránit tomu, aby protokoly byly příliš velké?

  3. Jak zabráním automatickému spouštění služeb Linuxu?

  1. Jak získat přístup ke vzdálené ploše Windows z Ubuntu Linux

  2. Jak programově zabránit linuxovému počítači ve spánku nebo zapnutí spořiče obrazovky?

  3. Jak zabránit uživateli v přihlášení, ale povolit su - user v Linuxu?