Maison  >  Article  >  développement back-end  >  Comment vider la goroutine du processus de point d'entrée du conteneur ?

Comment vider la goroutine du processus de point d'entrée du conteneur ?

王林
王林avant
2024-02-08 23:33:29860parcourir

如何转储容器入口点进程的 goroutine?

l'éditeur php Strawberry vous présentera comment vider la goroutine du processus de point d'entrée du conteneur. Lors du développement d'applications conteneurisées à l'aide du langage Go, nous devons souvent comprendre et déboguer les goroutines en cours d'exécution. Le dumping de la goroutine du processus de point d'entrée du conteneur est une méthode de débogage courante, qui peut nous aider à analyser et à résoudre les problèmes de l'application. Dans cet article, nous expliquerons en détail comment utiliser les outils et techniques pertinents pour vider la goroutine du processus de point d'entrée du conteneur, et fournirons des étapes spécifiques et des exemples de code. Explorons ensemble ce sujet amusant et pratique !

Contenu de la question

J'ai un problème où l'un des conteneurs ne se termine pas lorsque l'application est arrêtée par docker-compose up 运行的应用程序。当通过 docker-compose stop. Le conteneur exécute un processus écrit en Go, je souhaite donc vider la goroutine de ce processus pour voir où le processus est bloqué.

Je peux docker ps 查看容器,然后 docker exec -it c410494d5bb1f1d9dfe0d385746cdccc bash 进入容器,但是一旦我 kill -QUIT bb782c53ae52115ac2b562736c4917fd , à la fin du processus, le conteneur s'arrête également, donc je ne peux pas obtenir le dump goroutine.

Comment obtenir un dump goroutine dans ce cas ?

Solution de contournement

Le conteneur est également arrêté, je ne peux donc pas récupérer le dump goroutine.

Je pense que vous pouvez obtenir des dumps goroutines à partir des journaux du conteneur, à condition :

  1. docker-compose stop Arrêtez d'exécuter des conteneurs sans les supprimer
  2.  ;
  3. kill -quit bb782c53ae52115ac2b562736c4917fd Videz la goroutine sur stderr.

Voici la commande docker pour obtenir le journal du conteneur (-n précise le nombre de lignes à afficher à partir de la fin du journal) :

$ docker logs -n 1000 [container-name]

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