


Comment débogueriez-vous un serveur lent ou qui a une utilisation élevée de la mémoire?
Jul 06, 2025 am 12:02 AMSi vous constatez que le serveur s'exécute lentement ou que l'utilisation de la mémoire est trop élevée, vous devez vérifier la cause avant de fonctionner. Tout d'abord, vous devez vérifier l'utilisation des ressources système, utiliser les commandes TOP, HTOP, FREE -H, IOSTAT, SS -antP et autres commandes pour vérifier le CPU, la mémoire, les E / S de disque et les connexions réseau; Deuxièmement, analysez des problèmes de processus spécifiques et suivez le comportement des processus à haute occupation via des outils tels que PS, JSTACK, Strace; puis vérifier les journaux et surveiller les données, afficher les enregistrements OOM, les demandes d'exception, les requêtes lentes et autres indices; Enfin, le traitement ciblé est effectué en fonction de raisons courantes telles que les fuites de mémoire, l'épuisement des pools de connexion, les tempêtes de défaillance du cache et les conflits de taches de synchronisation, optimiser la logique du code, configurer un mécanisme de réessayer du délai de temps, ajouter des fusibles de limite actuelle et les ressources de mesure et d'évaluation régulièrement de la pression et d'évaluation.
Si vous constatez que le serveur s'exécute lentement ou si l'utilisation de la mémoire est trop élevée, ne vous précipitez pas pour redémarrer. Découvrez quel est le problème en premier, sinon vous le reviendrez la prochaine fois. Ce type de problème est généralement lié à l'utilisation des ressources, aux exceptions de processus ou aux erreurs de configuration.
Voici quelques instructions de dépannage et suggestions pratiques courantes:
Vérifier l'utilisation des ressources du système
Tout d'abord, vous devez conna?tre la charge et la consommation de ressources du système actuel. Les commandes couramment utilisées incluent top
, htop
(plus intuitive), free -h
et vmstat
.
- Utilisation du processeur : utilisez
top
ouhtop
pour voir quel processus occupe une grande quantité de CPU. - Utilisation de la mémoire :
free -h
peut rapidement afficher la mémoire totale, la mémoire et le cache utilisés. - E / S de disque : Utilisez
iostat
ouiotop
pour vérifier s'il existe des processus qui lisent fréquemment et écrivent sur le disque. - Connexion réseau :
netstat -antp
ouss -antp
peut dire s'il existe une connexion anormale ou une occupation du port.
Si un processus monte soudainement la ressource, vous pouvez d'abord enregistrer son PID et l'analyser plus tard.
Analyser des problèmes de processus spécifiques
Après avoir trouvé un processus qui occupe des ressources élevées, la prochaine étape consiste à voir ce qu'elle fait. Par exemple, une application Java peut provoquer un décalage fréquent en raison de GC complet; tandis qu'un processus PHP-FPM peut entra?ner des boucles mortes ou des requêtes lentes dans le code.
Vous pouvez utiliser les méthodes suivantes pour analyser en profondeur:
- Utilisez
ps -p <pid></pid>
pour afficher les informations de base du processus - Pour les applications Java, vous pouvez utiliser
jstack <pid></pid>
pour saisir la pile de threads pour voir si elle est coincée quelque part - Utilisez
strace -p <pid></pid>
pour voir quel système appelle le processus et s'il existe des opérations de blocage à long terme - S'il s'agit d'un service lié à la base de données, comme MySQL, vérifiez le journal de requête lent pour voir s'il n'y a pas de SQL non optimisé
Parfois, vous constaterez que bien qu'un certain processus occupe une quantité élevée, c'est en fait un comportement normal, comme lors de l'exécution de la tache de sauvegarde. Nous devons donc le regarder en combinaison avec la logique commerciale.
Vérifier les journaux et surveiller les données
Les journaux sont souvent l'indice clé pour découvrir des problèmes. Les journaux système (tels que /var/log/messages
ou journalctl
), les journaux d'applications et les journaux de base de données doivent être affichés.
- Y a-t-il un enregistrement d'OOM (hors de mémoire) tué? Vous pouvez le voir via
dmesg | grep -i kill
- Y a-t-il des demandes anormales, des délais d'expiration, des réessaiss et d'autres phénomènes dans le journal des applications?
- Y a-t-il une requête lente, une attente de verrouillage et d'autres situations dans le journal de la base de données?
S'il existe un système de surveillance (comme Prometheus Grafana), il sera plus facile de voir la tendance. Par exemple, l'utilisation de la mémoire continue-t-elle d'augmenter? Y a-t-il des taches chronométrées qui déclenchent un grand nombre d'opérations à un moment précis?
Causes courantes et suggestions de traitement
Certains problèmes sont en fait assez courants, comme:
- Les fuites de mémoire : les programmes écrits dans certaines langues (tels que Node.js, Java) sont sujets aux fuites de mémoire, et vous pouvez utiliser des outils correspondants pour analyser les instantanés de mémoire du tas.
- épuisement du pool de connexion : la connexion de la base de données n'est pas publiée et la demande HTTP n'est pas un délai d'expiration peut entra?ner une accumulation.
- Cache d'échec de la tempête : une fois le cache invalidé à grande échelle, toutes les demandes sont touchées dans la base de données, provoquant une avalanche.
- Conflit de tache chronométré : plusieurs taches fonctionnent en même temps, en mangeant toutes les ressources.
Lorsque vous rencontrez ces problèmes, vous pouvez commencer à partir de ces aspects:
- Optimiser la logique du code pour réduire l'utilisation des ressources inutiles
- Définir un délai d'expiration raisonnable et de réessayer
- Ajouter la limite de courant et le fusible aux interfaces clés
- Tests de stress des performances régulières et évaluation des ressources
Fondamentalement, c'est tout. Lorsque le serveur ralentit ou que la mémoire est explosée, examinez d'abord les ressources globales, puis localisez le processus spécifique, puis vérifiez les journaux et la surveillance, et enfin portez des jugements en fonction de modèles communs. Pas à chaque fois, les connaissances d'experts sont nécessaires, mais il y a beaucoup d'attention aux détails, en particulier celles qui "semblent normales mais qui sont en fait problématiques".
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!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

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

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

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Sujets chauds

LXD est décrit comme le conteneur de prochaine génération et le gestionnaire de machines virtuelles qui offre un immersif pour les systèmes Linux qui s'exécutent à l'intérieur de conteneurs ou comme machines virtuelles. Il fournit des images pour un nombre démesuré de distributions Linux avec le support

Clear Linux OS est le système d'exploitation idéal pour les personnes - les administrateurs du système Ahem - qui veulent avoir une distribution Linux minimale, sécurisée et fiable. Il est optimisé pour l'architecture Intel, ce qui signifie que l'exécution du système d'exploitation linux clair sur AMD SYS

Les étapes clés pour créer un certificat SSL auto-signé sont les suivantes: 1. Générez la clé privée, utilisez la commande OpenSSlGenrsa-OutSelfsigned.key2048 Pour générer un fichier de clé privée RSA 2048 bits, paramètre facultatif -AES256 pour obtenir une protection par mot de passe; 2. Créer une demande de certificat (CSR), exécuter OpenSSLReq-New-KeySelfSigned.Key-OutSelfsigned.csr et remplir les informations pertinentes, en particulier le champ "CommonName"; 3. Générez le certificat par auto-signé et utilisez OpenSSLX509-REQ-DOYS365-Ifelf-Signed.csr-SIGNK

Le navigateur Firefox est le navigateur par défaut pour la plupart des distributions Linux modernes telles que Ubuntu, Mint et Fedora. Initialement, ses performances peuvent être impressionnantes, cependant, avec le temps, vous remarquerez peut-être que votre navigateur n'est pas aussi rapide et res

Décompressez le fichier .zip sur Windows, vous pouvez cliquer avec le bouton droit pour sélectionner "Extraire tout", tandis que le fichier .tar.gz doit utiliser des outils tels que 7-Zip ou Winrar; Sur macOS et Linux, le fichier .zip peut être double-cliqué ou dézip commandé, et le fichier .tar.gz peut être décompressé par la commande TAR ou double-clica directement. Les étapes spécifiques sont: 1. Fichier Windows Processing.zip: clic droit → "Extraire tout"; 2. Fichier Windows Processing.tar.gz: installer des outils tiers → Cliquez avec le bouton droit sur décompresser; 3. Fichier MacOS / Linux Processing.zip: Double-cliquez ou exécutez unzipfilename.zip; 4. MacOS / Linux Processing.TAR

Lorsque vous rencontrez des problèmes DNS, vérifiez d'abord le fichier /etc/resolv.conf pour voir si le serveur de nom correct est configuré; Deuxièmement, vous pouvez ajouter manuellement le DNS public tel que 8,8.8.8 pour les tests; Utilisez ensuite les commandes NSlookup et Dig pour vérifier si la résolution DNS est normale. Si ces outils ne sont pas installés, vous pouvez d'abord installer le package DnsUtils ou Bind-Utils; Vérifiez ensuite l'état du service et le fichier de configuration résolus SystemD /etc/systemd/resolved.conf, et définissez DNS et FallbackDNS au besoin et redémarrez le service; Enfin, vérifiez l'état de l'interface réseau et les règles du pare-feu, confirmez que le port 53 n'est pas

En tant qu'administrateur système, vous pouvez vous retrouver (aujourd'hui ou à l'avenir) dans un environnement où Windows et Linux coexistent. Ce n'est un secret pour personne que certaines grandes entreprises préfèrent (ou doivent) gérer certains de leurs services de production dans Windows Boxes et

Si vous constatez que le serveur s'exécute lentement ou que l'utilisation de la mémoire est trop élevée, vous devez vérifier la cause avant de fonctionner. Tout d'abord, vous devez vérifier l'utilisation des ressources système, utiliser les commandes TOP, HTOP, Free-H, IOSTAT, SS-ANTP et d'autres commandes pour vérifier les connexions CPU, mémoire, E / S de disque et réseau; Deuxièmement, analysez des problèmes de processus spécifiques et suivez le comportement des processus à haute occupation via des outils tels que PS, JSTACK, Strace; puis vérifier les journaux et surveiller les données, afficher les enregistrements OOM, les demandes d'exception, les requêtes lentes et autres indices; Enfin, le traitement ciblé est effectué en fonction de raisons courantes telles que les fuites de mémoire, l'épuisement des pools de connexion, les tempêtes de défaillance du cache et les conflits de taches de synchronisation, optimiser la logique du code, configurer un mécanisme de réessayer du délai de temps, ajouter des fusibles de limite actuelle et les ressources de mesure et d'évaluation régulièrement de la pression et d'évaluation.
