Heim  >  Artikel  >  Backend-Entwicklung  >  Wie entleere ich die Goroutine des Container-Einstiegspunktprozesses?

Wie entleere ich die Goroutine des Container-Einstiegspunktprozesses?

王林
王林nach vorne
2024-02-08 23:33:29860Durchsuche

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

Der PHP-Editor Strawberry zeigt Ihnen, wie Sie die Goroutine des Container-Einstiegspunktprozesses sichern. Bei der Entwicklung von Containeranwendungen mit der Go-Sprache müssen wir häufig laufende Goroutinen verstehen und debuggen. Das Dump der Goroutine des Container-Einstiegspunktprozesses ist eine gängige Debugging-Methode, die uns bei der Analyse und Lösung von Problemen in der Anwendung helfen kann. In diesem Artikel besprechen wir ausführlich, wie Sie relevante Tools und Techniken verwenden, um die Goroutine des Container-Einstiegspunktprozesses zu sichern, und stellen spezifische Schritte und Beispielcode bereit. Lassen Sie uns gemeinsam dieses unterhaltsame und praktische Thema erkunden!

Frageninhalt

Ich habe ein Problem, bei dem einer der Container nicht beendet wird, wenn die Anwendung von docker-compose up 运行的应用程序。当通过 docker-compose stop gestoppt wird. Der Container führt einen in Go geschriebenen Prozess aus, daher möchte ich die Goroutine dieses Prozesses sichern, um zu sehen, wo der Prozess hängen bleibt.

Ich kann docker ps 查看容器,然后 docker exec -it c410494d5bb1f1d9dfe0d385746cdccc bash 进入容器,但是一旦我 kill -QUIT bb782c53ae52115ac2b562736c4917fd, da der Prozess beendet wird, stoppt auch der Container, sodass ich den Goroutine-Dump nicht abrufen kann.

Wie bekomme ich in diesem Fall einen Goroutine-Dump?

Workaround

Der Container wird ebenfalls angehalten, sodass ich den Goroutine-Dump nicht abrufen kann.

Ich denke, Sie können Goroutine-Dumps aus den Protokollen des Containers erhalten, vorausgesetzt:

  1. docker-compose stop Stoppen Sie die Ausführung von Containern, ohne sie zu löschen
  2. kill -quit bb782c53ae52115ac2b562736c4917fd Goroutine nach stderr verschieben.

Das Folgende ist der Docker-Befehl zum Abrufen des Containerprotokolls (-n gibt die Anzahl der Zeilen an, die ab dem Ende des Protokolls angezeigt werden sollen):

$ docker logs -n 1000 [container-name]

Das obige ist der detaillierte Inhalt vonWie entleere ich die Goroutine des Container-Einstiegspunktprozesses?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen