GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come impedire a PHP-FPM di consumare troppa RAM in Linux

Se hai distribuito un LEMP (Linux , NGINX , MySQL/MariaDB e PHP ) stack, probabilmente stai usando FastCGI proxy all'interno di NGINX (come server HTTP), per l'elaborazione PHP. PHP-FPM (acronimo di FastCGI Process Manager ) è un'alternativa ampiamente utilizzata e ad alte prestazioni PHP FastCGI attuazione.

Ecco le guide utili per configurare LEMP Stack in Linux.

  • Come installare lo stack LEMP con PhpMyAdmin in Ubuntu 20.04
  • Come installare il server LEMP su CentOS 8
  • Come installare LEMP su Debian 10 Server

Di recente, tutti i nostri PHP siti web su uno dei nostri LEMP i server Web sono diventati lenti e alla fine hanno smesso di rispondere all'accesso al server. abbiamo scoperto che la RAM del sistema stava esaurendo:PHP-FPM aveva consumato la maggior parte della RAM, come indicato nella schermata seguente (sguardi – strumento di monitoraggio del sistema).

$ glances

In questo articolo, mostreremo come prevenire PHP-FPM dal consumare troppa o tutta la memoria di sistema (RAM ) in Linux. Alla fine di questa guida imparerai come ridurre PHP-FPM consumo di memoria del 50% o più.

Riduci l'utilizzo della memoria PHP-FPM

Dopo aver fatto alcune ricerche su Internet, abbiamo scoperto che dovevamo riconfigurare il PHP-FPM process manager e alcuni suoi aspetti per ridurre il consumo di memoria di PHP-FPM nel file di configurazione del pool.

Il pool predefinito è www e il suo file di configurazione si trova in /etc/php-fpm.d/www.conf (su CentOS/RHEL/Fedora ) o /etc/php/7.4/fpm/pool.d/www.conf (su 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]

Trova le seguenti direttive e imposta il loro valore in base al tuo caso d'uso. Per le direttive commentate, è necessario decommentarle.

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

Spieghiamo brevemente le direttive di cui sopra e i loro valori. Il pm La direttiva determina come il manager di processo controllerà il numero di processi figlio. Il metodo predefinito è dinamico , il che significa che il numero di figli (processi figli) viene impostato dinamicamente in base ad alcune altre direttive, tra cui pm.max_children che definisce il numero massimo di bambini che possono essere vivi contemporaneamente.

Il gestore di processo più ideale è ondemand schema in cui nessun processo figlio viene creato all'avvio ma viene generato su richiesta. I processi figlio vengono biforcati solo quando le nuove richieste si connetteranno in base a pm.max_children e pm.process_idle_timeout che definisce il numero di secondi dopo i quali un processo inattivo verrà interrotto.

Ultimo ma non meno importante, dobbiamo impostare i pm.max_requests parametro che definisce il numero di richieste che ogni processo figlio deve eseguire prima del respawn. Tieni presente che questo parametro può essere utilizzato anche come soluzione alternativa per perdite di memoria nelle librerie di terze parti.

Riferimento :un modo migliore per eseguire PHP-FPM.

Dopo aver effettuato queste configurazioni di cui sopra, ho notato RAM l'utilizzo ora va bene sul nostro server. Hai dei pensieri da condividere relativi a questo argomento o domande? Raggiungici tramite il modulo di feedback qui sotto.


Ubuntu
  1. Come cancellare la RAM del computer in Ubuntu e Linux Mint

  2. Linux:come eseguire un bootloader da Linux?

  3. Come impedire a Windows 10 di danneggiare il superblocco Ext4 ogni volta?

  4. Come posso impedire l'avvio automatico dei servizi Linux?

  5. Come impedire a un utente di accedere, ma consentire a su - user in Linux?

Come visualizzare i dati da un file di testo in Linux

Quanta RAM è installata sul tuo sistema Ubuntu

Come disinstallare le applicazioni da Ubuntu Linux

Come disinstallare programmi da Ubuntu Linux

Ubuntu:come impedire a Firefox di aggiornarsi alla versione 57 su Ubuntu 16.04?

Come verificare la presenza di errori nella RAM tramite Linux?