Maison développement back-end tutoriel php Résolvez le problème de l'épuisement de la mémoire causé par un trop grand nombre de processus php-fpm sous l'exemple Linux_php

Résolvez le problème de l'épuisement de la mémoire causé par un trop grand nombre de processus php-fpm sous l'exemple Linux_php

Dec 04, 2017 pm 01:10 PM
linux php php-fpm

Cet article présente principalement comment résoudre le problème d'épuisement de la mémoire causé par un trop grand nombre de processus php-fpm sous Linux. Les amis qui ont besoin de comprendre php-fpm peuvent s'y référer. article pour apprendre. Parlons de la façon de résoudre le problème d'épuisement de la mémoire causé par trop de processus php-fpm.

Récemment, j'ai constaté que le serveur Linux et le service de base de données de mon blog raccrochaient souvent, nécessitant un redémarrage avant un accès normal. C'était extrêmement dégoûtant, j'ai donc décidé de commencer à résoudre le problème et de libérer mon temps et. problème d'énergie (je ne veux pas sortir fréquemment), puis redémarrer manuellement, ce qui est laborieux et prend du temps).

Analyser le problème

Après avoir découvert le problème, utilisez d'abord la commande free -m pour afficher l'état d'exécution actuel du serveur :

Vous pouvez voir que la mémoire de mon serveur est de 2 Go, mais actuellement il ne reste que 70 Mo de mémoire disponible et l'utilisation de la mémoire atteint 92 %. le service de base de données se bloque en raison d'une utilisation élevée de la mémoire.

Continuez à regarder les détails, utilisez la commande top :

Regardez ensuite les détails du processus répertoriés dans le résultat de la commande, en vous concentrant sur le point Taux d'utilisation de la mémoire à 10 colonnes :

Il s'avère que l'utilisation du processeur n'est pas élevée et que le problème du processeur est exclu. De plus, on peut voir que la base de données. le service occupe 15,2% de la mémoire, et l'utilisation de la mémoire lorsqu'elle est trop élevée, cela évince le processus de base de données (le processus qui occupe le plus de mémoire), provoquant le blocage du service. Nous devons donc vérifier les détails. utilisation de la mémoire. Quels processus consomment autant de mémoire ?

Utiliser la commande :


ps auxw|head -1;ps auxw|sort -rn -k4|head -40
Copier après la connexion


Afficher les 40 principaux processus qui consomment le plus de mémoire :

En regardant le taux d'utilisation de la mémoire dans la quatrième colonne, nous avons constaté qu'en plus du service base de données mysql, le pool de services php-fpm en a ouvert trop processus enfants, occupant plus de la moitié de la mémoire , le problème est trouvé, nous commençons à résoudre le problème : définir le nombre de processus pour contrôler le pool de processus php-fpm.

Résoudre le problème

Grâce à divers moyens de recherche, il a été constaté que vous pouvez configurer le pm.max_children attribut, contrôlez le nombre de sous-processus php-fpm. Tout d'abord, ouvrez le fichier de configuration php-fpm et exécutez la commande :


.
vi /etc/php-fpm.d/www.conf
Copier après la connexion


Trouvez le champ pm.max_children et constatez que sa valeur est trop grande :

Comme le montre la figure , la valeur pm.max_children est de 50, et chaque processus occupe 1% à 2,5% de la mémoire, ce qui représente plus de la moitié de la mémoire, nous devons donc réduire sa valeur ici à 25. En même temps. temps, vérifiez les deux attributs suivants :

pm.max_spare_servers : La valeur indique le nombre maximum garanti de processus inactifs. Si le processus inactif est supérieur à cette valeur, celui-ci sera nettoyé pm.min_spare_servers : Le nombre minimum garanti de processus inactifs. Si le processus inactif est inférieur à cette valeur, un nouveau processus enfant sera créé

Aucune de ces deux valeurs ne peut être supérieure à la valeur pm.max_children ; la valeur pm.max_spare_servers est définie sur 60 % à 80 % de la valeur pm.max_children.

Enfin, redémarrez php-fpm


systemctl restart php-fpm
Copier après la connexion


Vérifiez à nouveau l'utilisation de la mémoire, l'utilisation de la mémoire est réduite beaucoup :

Après avoir observé l'utilisation de la mémoire à plusieurs reprises, nous avons constaté qu'après cette amélioration, la consommation des ressources mémoire du serveur a été grandement réduite.

ps : Afficher le nombre de processus ouverts par php-fpm et la limite de mémoire de chaque processus

1. processus ouverts sur le serveur via la commande Combien y a-t-il de processus php-cgi


 ps -fe |grep "php-fpm"|grep "pool"|wc -l
Copier après la connexion



3. environnement linux+nginx+php, la limite mémoire de chaque processus php-fpm


Méthode de paramétrage :
 netstat -anp|grep "php-fpm"|grep "tcp"|grep "pool"|wc -l
Copier après la connexion


Modifier le php-fpm.conf fichier de configuration

php_admin_value[memory_limit] = 128M (le fichier de configuration sur mon serveur se trouve dans /etc/php5/fpm/pool.d/www.conf. Ce fichier est inclus dans php-fpm.conf) Les nombres suivants peuvent être arbitraires Changement : 32M, 64M, 128M, 256M, 512M Ce paramètre peut être écrit en fonction de la taille de la mémoire de votre serveur et de vos besoins. Après modification, vous devez charger le service php-fpm.

Résumé

Ce qui précède est ce que l'éditeur vous présente pour résoudre le problème de l'épuisement de la mémoire causé par trop de processus php-fpm sous Linux. J'espère que cela aidera tout le monde.

Recommandations associées :

Comment activer les statistiques d'état avec php-fpm

Partage d'un exemple de code expliqué par php-fpm

Présentation de solutions pour réduire l'utilisation de la mémoire PHP-FPM

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment démarrer Nginx dans Linux Comment démarrer Nginx dans Linux Apr 14, 2025 pm 12:51 PM

Étapes pour démarrer Nginx dans Linux: Vérifiez si Nginx est installé. Utilisez SystemCTL Start Nginx pour démarrer le service NGINX. Utilisez SystemCTL Activer Nginx pour activer le démarrage automatique de Nginx au démarrage du système. Utilisez SystemCTL Status Nginx pour vérifier que le démarrage est réussi. Visitez http: // localhost dans un navigateur Web pour afficher la page de bienvenue par défaut.

Comment vérifier si Nginx est démarré Comment vérifier si Nginx est démarré Apr 14, 2025 pm 01:03 PM

Comment confirmer si Nginx est démarré: 1. Utilisez la ligne de commande: SystemCTl Status Nginx (Linux / Unix), netStat -ano | Findstr 80 (Windows); 2. Vérifiez si le port 80 est ouvert; 3. Vérifiez le message de démarrage NGINX dans le journal système; 4. Utilisez des outils tiers, tels que Nagios, Zabbix et Icinga.

Comment démarrer le serveur Nginx Comment démarrer le serveur Nginx Apr 14, 2025 pm 12:27 PM

Le démarrage d'un serveur Nginx nécessite différentes étapes en fonction des différents systèmes d'exploitation: Système Linux / Unix: Installez le package NGINX (par exemple, en utilisant Apt-Get ou Yum). Utilisez SystemCTL pour démarrer un service NGINX (par exemple, sudo systemctl start nginx). Système Windows: téléchargez et installez les fichiers binaires Windows. Démarrer Nginx à l'aide de l'exécutable Nginx.exe (par exemple, nginx.exe -c conf \ nginx.conf). Peu importe le système d'exploitation que vous utilisez, vous pouvez accéder au serveur IP

Comment résoudre l'erreur Nginx304 Comment résoudre l'erreur Nginx304 Apr 14, 2025 pm 12:45 PM

Réponse à la question: 304 Erreur non modifiée indique que le navigateur a mis en cache la dernière version de ressource de la demande du client. Solution: 1. Effacer le cache du navigateur; 2. Désactiver le cache du navigateur; 3. Configurer Nginx pour permettre le cache client; 4. Vérifier les autorisations du fichier; 5. Vérifier le hachage du fichier; 6. Désactiver le CDN ou le cache proxy inversé; 7. Redémarrez Nginx.

Comment vérifier si Nginx est démarré? Comment vérifier si Nginx est démarré? Apr 14, 2025 pm 12:48 PM

Dans Linux, utilisez la commande suivante pour vérifier si Nginx est démarré: SystemCTL Status Nginx Juges Basé sur la sortie de la commande: si "Active: Active (Running)" s'affiche, Nginx est démarré. Si "Active: Inactive (Dead)" est affiché, Nginx est arrêté.

Comment résoudre l'erreur Nginx403 Comment résoudre l'erreur Nginx403 Apr 14, 2025 pm 12:54 PM

Le serveur n'a pas l'autorisation d'accéder à la ressource demandée, ce qui donne une erreur NGINX 403. Les solutions incluent: vérifier les autorisations de fichiers. Vérifiez la configuration .htaccess. Vérifiez la configuration de Nginx. Configurez les autorisations Selinux. Vérifiez les règles du pare-feu. Dépanner d'autres causes telles que les problèmes de navigateur, les défaillances du serveur ou d'autres erreurs possibles.

PHP: Gestion des bases de données et logique côté serveur PHP: Gestion des bases de données et logique côté serveur Apr 15, 2025 am 12:15 AM

PHP utilise les extensions MySQLI et PDO pour interagir dans les opérations de base de données et le traitement de la logique côté serveur, et traite la logique côté serveur via des fonctions telles que la gestion de session. 1) Utilisez MySQLI ou PDO pour vous connecter à la base de données et exécuter les requêtes SQL. 2) Gérer les demandes HTTP et l'état de l'utilisateur via la gestion de session et d'autres fonctions. 3) Utiliser les transactions pour assurer l'atomicité des opérations de base de données. 4) Empêcher l'injection de SQL, utiliser les connexions de gestion des exceptions et de clôture pour le débogage. 5) Optimiser les performances via l'indexation et le cache, écrivez du code très lisible et effectuez une gestion des erreurs.

Différence entre Centos et Ubuntu Différence entre Centos et Ubuntu Apr 14, 2025 pm 09:09 PM

Les principales différences entre Centos et Ubuntu sont: l'origine (Centos provient de Red Hat, pour les entreprises; Ubuntu provient de Debian, pour les particuliers), la gestion des packages (Centos utilise Yum, se concentrant sur la stabilité; Ubuntu utilise APT, pour une fréquence de mise à jour élevée), le cycle de support (CentOS fournit 10 ans de soutien, Ubuntu fournit un large soutien de LT tutoriels et documents), utilisations (Centos est biaisé vers les serveurs, Ubuntu convient aux serveurs et aux ordinateurs de bureau), d'autres différences incluent la simplicité de l'installation (Centos est mince)

See all articles