PHP-FPM-iň Linux-da gaty köp RAM sarp etmeginiň öňüni nädip almaly


LEMP (Linux, NGINX, MySQL/MariaDB we PHP) stakany ýerleşdiren bolsaňyz, PHP gaýtadan işlemek üçin NGINX-de (HTTP serweri hökmünde) FastCGI proksi ulanýan bolsaňyz gerek. PHP-FPM (FastCGI Prosess Dolandyryjysynyň gysgaldylyşy) giňden ulanylýan we ýokary öndürijilikli PHP FastCGI ýerine ýetirişidir.

Linux-da LEMP Stack gurmak boýunça peýdaly gollanmalar.

  • Ubuntu 20.04-de PhpMyAdmin bilen LEMP Stack-i nädip gurmaly
  • CentOS 8-de LEMP serwerini nädip gurmaly
  • Debian 10 Serwerinde LEMP-ni nädip gurmaly

Recentlyakynda, LEMP web serwerlerimiziň birindäki PHP web sahypalarymyzyň hemmesi haýal boldy we netijede serwere girmek baradaky jogaplary bes etdi. ulgamyň RAM-da pes işleýändigini anykladyk: PHP-FPM aşakdaky skrinshotda görkezilişi ýaly RAM-yň köp bölegini sarp etdi (serediş - ulgam gözegçilik guraly).

$ glances

Bu makalada, PHP-FPM-iň Linux ýa-da ähli ulgam ýadyňyzy (RAM) aşa köp sarp etmeginiň öňüni alyp bileris. Bu gollanmanyň ahyrynda, PHP-FPM ýadyň sarp edilişini 50% ýa-da ondanam azaltmagy öwrenersiňiz.

PHP-FPM ýadyň ulanylyşyny azaltmak

Internetde birnäçe gözleg geçirenimizden soň, howuz konfigurasiýa faýlynda PHP-FPM ýadyň sarp edilişini azaltmak üçin PHP-FPM amal dolandyryjysyny we käbir taraplaryny täzeden düzmelidigimize göz ýetirdik.

Adaty howuz www we konfigurasiýa faýly /etc/php-fpm.d/www.conf (CentOS/RHEL/Fedora-da) ýa-da /etc/php/7.4/fpm/pool.d/www.conf ( 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]

Aşakdaky görkezmeleri tapyň we ulanylyş ýagdaýyna görä olaryň bahasyny kesgitläň. Düşündiriş berlen görkezmeler üçin olary aýyrmaly.

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

Aboveokardaky görkezmeleri we olaryň gymmatlyklaryny gysgaça düşündireliň. Agşam görkezmesi prosess dolandyryjysynyň çaga amallarynyň sanyna nädip gözegçilik etjekdigini kesgitleýär. Bellenen usul dinamiki, bu bir wagtyň özünde diri bolup bilýän çagalaryň iň köp sanyny kesgitleýän pm.max_children ýaly käbir beýleki görkezmelere baglylykda çagalaryň sanyny (çaga amallary) dinamiki taýdan kesgitlenýär.

Iň amatly prosessor dolandyryjysy, başlangyçda hiç bir çaga prosesi döredilmeýän, ýöne isleg boýunça dörän ondemand shemasydyr. Çaga amallary diňe täze haýyşlar pm.max_children we pm.process_idle_timeout esasynda birikdirilende, boş işiň öldüriljek sekunt sanyny kesgitlän mahaly berilýär.

Iň soňkusy, iň bolmanda, pm.max_requests parametrini kesgitlemeli, bu her bir çaga prosesi gaýtadan gözden geçirmezden ozal ýerine ýetirilmeli haýyşlaryň sanyny kesgitleýär. Bu parametriň 3-nji tarap kitaphanalarynda ýadyň syzmagy üçin iş usuly hökmünde hem ulanylyp bilinjekdigine üns beriň.

Salgylanma: PHP-FPM işletmegiň has gowy usuly.

Aboveokardaky konfigurasiýalary edenimden soň, serwerimizde RAM ulanylyşynyň gowydygyny gördüm. Bu mowzuk ýa-da soraglar bilen baglanyşykly paýlaşjak pikirleriňiz barmy? Aşakdaky seslenme formasy arkaly bize ýüz tutuň.