Maison > Java > Comment faire fermer la JVM rapidement après un crash de SIGSEGV ?

Comment faire fermer la JVM rapidement après un crash de SIGSEGV ?

WBOY
Libérer: 2024-02-09 19:09:09
avant
1077 Les gens l'ont consulté

L'éditeur PHP Xigua vous donnera la réponse Lorsque la JVM rencontre un crash SIGSEGV, vous pouvez prendre certaines mesures pour quitter rapidement. Tout d'abord, vous pouvez définir le paramètre JVM -XX:+CrashOnOutOfMemoryError pour provoquer le crash et la fermeture rapide de la JVM en cas de débordement de mémoire. Deuxièmement, vous pouvez utiliser le mécanisme de gestion des exceptions de Java pour intercepter les exceptions SIGSEGV et appeler la méthode System.exit() pour quitter le programme après avoir intercepté l'exception. De plus, vous pouvez également utiliser l'interface JNI pour interagir avec le système d'exploitation et obtenir une sortie rapide en appelant la méthode de sortie fournie par le système d'exploitation. En bref, en définissant correctement les paramètres de la JVM et en utilisant des mécanismes de gestion des exceptions appropriés, la JVM peut se fermer rapidement après un crash de SIGSEGV et améliorer la stabilité et la fiabilité du programme.

Contenu de la question

L'un de nos services plante fréquemment en raison de problèmes avec Tensorflow Java. Nous pouvons vivre avec cela (les k8 le redémarreront, dans de nombreux cas). Le problème est que la JVM met plusieurs minutes à se terminer. Existe-t-il un moyen de forcer une sortie rapide de sigsegv en code natif ?

corrupted size vs. prev_size while consolidating
#
# a fatal error has been detected by the java runtime environment:
#
#  sigsegv (0xb) at pc=0x00007fe4f321a898, pid=1, tid=545
#
# jre version: openjdk runtime environment zulu21.28+85-ca (21.0+35) (build 21+35)
# java vm: openjdk 64-bit server vm zulu21.28+85-ca (21+35, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, linux-amd64)
# problematic frame:
# c  [libc.so.6+0x28898]  abort+0x178
#
# core dump will be written. default location: /data/core
#
# an error report file with more information is saved as:
# /data/hs_err_pid1.log
Copier après la connexion

Quelques minutes plus tard :

# [ timer expired, abort... ]
[thread 1037 also had an error]
Copier après la connexion

Solution de contournement

Ajoutez les options jvm suivantes :

-xx:+suppressfatalerrormessage -xx:-createcoredumponcrash
Copier après la connexion

Cela forcera la JVM à se terminer immédiatement sur sigsegv sans créer de rapport d'erreur ni de vidage de mémoire. Si vous souhaitez toujours voir le message d'erreur fatale, remplacez -xx:+suppressfatalerrormessage 替换为 -xx:errorlogtimeout=1.

Je soupçonne que cette JVM fonctionne avec un tas assez volumineux (> 64 Go), et pour un processus utilisant autant de mémoire, l'écriture du fichier de vidage de mémoire prend juste un certain temps :

# Core dump will be written. Default location: /data/core
Copier après la connexion

Pendant les quelques minutes que cela prend, vous verrez peut-être le fichier core dump croître à l'emplacement ci-dessus (ce serait un moyen simple de confirmer cette théorie).

Le remède consiste à désactiver la création de fichiers de vidage de mémoire, dont les détails dépendent de votre système d'exploitation spécifique (mais les vidages de mémoire peuvent être désactivés sur presque tous les systèmes d'exploitation basés sur Unix). De plus, il peut y avoir des goulots d'étranglement liés au système de fichiers à cet emplacement particulier, ce qui entraîne une écriture du core dump plus lente que prévu.

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!

source:stackoverflow.com
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal