Maison  >  Article  >  Java  >  Comment dépanner l'utilisation du processeur du processus Java à 100 %

Comment dépanner l'utilisation du processeur du processus Java à 100 %

不言
不言avant
2019-03-19 09:25:095067parcourir

Ce que cet article vous apporte concerne la méthode de dépannage de l'utilisation à 100 % du processeur du processus Java. Il a une certaine valeur de référence. J'espère que cela sera utile. vous avez aidé.

100 % fait référence à l'occupation d'un cœur du processeur, deux cœurs correspondent à 200 %, et ainsi de suite.
L'utilisation du processeur et l'ID de processus correspondant (pid) peuvent être déterminés via la commande supérieure. Sur l'interface supérieure, appuyez sur c (affiche les paramètres complets de la ligne de commande), appuyez sur 1 (affiche les statistiques de chaque cœur). (Recommandé : Tutoriel Java)

Les possibilités les plus courantes de ce problème sont les suivantes :

1. Une mémoire de tas insuffisante entraîne un GC complet fréquent
Peut être. résolu par deux méthodes : Commande pour confirmer

sudo jmap -heap pid Vérifiez la consommation de mémoire du tas

sudo jstat -gc pid interval count Vérifiez l'état du GC, exemple : sudo jstat -gc 5746 3000 5 signifie vérifier la situation du processus GC 5746, imprimer toutes les 3000 millisecondes, imprimer 5 fois au total. Si FGC/FGCT augmente de manière significative, le Full GC est très fréquent.

Traitement de suivi :

Si la situation est urgente, vous devez immédiatement redémarrer le processus d'application Java. Si ce n'est pas urgent, vous devez obtenir des informations pertinentes pour analyser pourquoi le tas de mémoire. est consommé. Il peut y avoir un problème de fuite de mémoire. Vous pouvez utiliser 1) sudo jmap -histo pid | heap.bin pid pour exporter le vidage du tas vers un fichier local, vous pouvez utiliser l'outil Eclipse MAT pour analyser les fuites de mémoire

2. Problèmes d'implémentation du code

Idée : rechercher quel thread occupe le processeur. 1) Recherchez d'abord l'ID de thread avec une utilisation élevée du processeur dans le système local. 2) Recherchez le thread Java et la pile de threads correspondants

top -H -p pid pour vérifier quels threads dans un processus occupent le. CPU, copiez l'ID de thread correspondant et convertissez-le en hexadécimal [IDEA] Tools》Groovy Console》println Long.toHexString(1234) pour terminer la conversion].

sudo jstack -l -F pid | less Obtenez la pile de threads Java, recherchez avec l'ID de thread local hexadécimal et vous trouverez le thread correspondant au nid d'une certaine ligne. Vérifiez la pile de threads Java pour trouver la classe Java et le numéro de ligne correspondants, puis lisez le code pour trouver la cause possible du problème.

Explication de tid/nid dans les informations de la pile jstack
https://docs.oracle.com/javas...

The thread dump consists of the thread stack, including the thread state, for all Java threads in the virtual machine.

The header line contains the following information about the thread:
- Thread ID (tid), which is the address of a thread structure in memory.
- ID of the native thread (nid).


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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer