GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment empêcher PHP-FPM de consommer trop de RAM sous Linux

Si vous avez déployé un LEMP (Linux , NGINX , MySQL/MariaDB , et PHP ) pile, alors vous utilisez probablement FastCGI proxy dans NGINX (en tant que serveur HTTP), pour le traitement PHP. PHP-FPM (acronyme de FastCGI Process Manager ) est une alternative largement utilisée et performante PHP FastCGI mise en œuvre.

Voici les guides utiles sur la configuration de la pile LEMP sous Linux.

  • Comment installer la pile LEMP avec PhpMyAdmin dans Ubuntu 20.04
  • Comment installer le serveur LEMP sur CentOS 8
  • Comment installer LEMP sur le serveur Debian 10

Récemment, tous nos PHP sites Web sur l'un de nos LEMP les serveurs Web sont devenus lents et ont finalement cessé de répondre lors de la connexion au serveur. nous avons découvert que le système manquait de RAM :PHP-FPM avait consommé la majeure partie de la RAM, comme indiqué dans la capture d'écran suivante (coups d'œil - outil de surveillance du système).

$ glances

Dans cet article, nous montrerons comment empêcher PHP-FPM de consommer trop ou toute la mémoire de votre système (RAM ) sous Linux. À la fin de ce guide, vous apprendrez comment réduire PHP-FPM consommation de mémoire de 50 % ou plus.

Réduire l'utilisation de la mémoire PHP-FPM

Après avoir fait quelques recherches sur Internet, nous avons découvert qu'il fallait reconfigurer le PHP-FPM gestionnaire de processus et certains aspects de celui-ci pour réduire la consommation de mémoire de PHP-FPM dans le fichier de configuration du pool.

Le pool par défaut est www et son fichier de configuration se trouve dans /etc/php-fpm.d/www.conf (sur CentOS/RHEL/Fedora ) ou /etc/php/7.4/fpm/pool.d/www.conf (sur 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]

Recherchez les directives suivantes et définissez leur valeur en fonction de votre cas d'utilisation. Pour les directives qui sont commentées, vous devez les décommenter.

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

Expliquons brièvement les directives ci-dessus et leurs valeurs. Le pm La directive détermine comment le gestionnaire de processus contrôlera le nombre de processus enfants. La méthode par défaut est dynamique , ce qui signifie que le nombre d'enfants (processus enfants) est défini dynamiquement en fonction d'autres directives, notamment pm.max_children qui définit le nombre maximum d'enfants qui peuvent être en vie en même temps.

Le gestionnaire de processus le plus idéal est le à la demande schéma où aucun processus enfant n'est créé au démarrage mais est généré à la demande. Les processus enfants ne sont dupliqués que lorsque de nouvelles requêtes se connectent en fonction de pm.max_children et pm.process_idle_timeout qui définit le nombre de secondes après lesquelles un processus inactif sera tué.

Enfin, nous devons définir les pm.max_requests paramètre qui définit le nombre de requêtes que chaque processus enfant doit exécuter avant de réapparaître. Notez que ce paramètre peut également être utilisé comme solution de contournement pour les fuites de mémoire dans les bibliothèques tierces.

Référence :Une meilleure façon d'exécuter PHP-FPM.

Après avoir fait ces configurations ci-dessus, j'ai remarqué RAM l'utilisation est maintenant correcte sur notre serveur. Avez-vous des idées à partager sur ce sujet ou des questions ? Contactez-nous via le formulaire de commentaires ci-dessous.


Ubuntu
  1. Comment effacer la RAM de l'ordinateur dans Ubuntu et Linux Mint

  2. Linux - Comment exécuter un chargeur de démarrage à partir de Linux ?

  3. Comment empêcher Windows 10 de corrompre le superbloc Ext4 à chaque fois ?

  4. Comment empêcher les services Linux de démarrer automatiquement ?

  5. Comment empêcher un utilisateur de se connecter, mais autoriser l'utilisateur su sous Linux ?

Comment afficher les données d'un fichier texte sous Linux

Combien de RAM est installée sur votre système Ubuntu

Comment désinstaller des applications d'Ubuntu Linux

Comment désinstaller des programmes d'Ubuntu Linux

Ubuntu - Comment empêcher Firefox de se mettre à jour vers la version 57 sur Ubuntu 16.04 ?

Comment vérifier les erreurs dans Ram via Linux ?