J'ai une instance jenkins qui est coincée dans une sorte de boucle sans fin sans aucune activité visible.
Je peux obtenir le pid
du processus en cours, alors comment générer une trace que je peux utiliser pour un rapport de bogue?
Je cours sur Linux.
Essayez avec jstack . Cela vous donnera une liste complète de ce que font vos discussions. Tout ce dont il a besoin, c'est du processus pid.
Prenez une décharge de fil. Connectez-vous via Visual VM et demandez un vidage. Ou si sur unix alors kill -3 pid ou sur windows Ctrl + Break sur le processus console le ferait pour vous. Le vidage va directement à la console. Vous pouvez également utiliser jstack pour lancer un vidage.
Dans * nix, avec top
en appuyant sur H
vous pouvez voir les threads.
Ensuite, avec jps
, vous pouvez voir le pid
garder à l'esprit que si le processus a été démarré avec des privilèges, vous devez l'exécuter avec Sudo
par exemple.
Si vous prenez l'ID de thread et le convertissez en hexadécimal, vous pouvez croiser ces données avec le jstack pid
production.
Les deux outils sont dans $Java_HOME/bin
.
Ctrl+\
sur linux (qui envoie SIGQUIT
)
Ctrl+Break
sur Windows (qui envoie SIGBREAK
sous MSVCRT)
Jetez un œil à VisualVM . Il y a beaucoup d'outils de profilage Nice avec, et vous pouvez effectuer un vidage de thread.