ホームページ  >  記事  >  バックエンド開発  >  コンテナエントリポイントプロセスのゴルーチンをダンプするにはどうすればよいですか?

コンテナエントリポイントプロセスのゴルーチンをダンプするにはどうすればよいですか?

王林
王林転載
2024-02-08 23:33:29860ブラウズ

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

php editor Strawberryでは、コンテナのエントリポイント処理のゴルーチンをダンプする方法を紹介します。 Go 言語を使用してコンテナ化されたアプリケーションを開発する場合、多くの場合、実行中のゴルーチンを理解してデバッグする必要があります。コンテナのエントリ ポイント プロセスのゴルーチンをダンプすることは一般的なデバッグ方法であり、アプリケーションの問題を分析して解決するのに役立ちます。この記事では、関連するツールとテクニックを使用してコンテナ エントリ ポイント プロセスの goroutine をダンプする方法について詳しく説明し、具体的な手順とサンプル コードを示します。この楽しくて実用的なトピックを一緒に探求しましょう!

質問内容

docker-compose upでアプリケーションを実行しています。 docker-compose stop を使用してアプリケーションを停止すると、コンテナーの 1 つが終了しません。コンテナーは Go で書かれたプロセスを実行するので、そのプロセスの goroutine をダンプして、プロセスがどこでスタックしているかを確認したいと思います。

docker ps でコンテナを表示し、次に docker exec -it bash でコンテナにアクセスできますが、一度 kill -QUIT < を実行すると、プロセス ID> ;、プロセスが終了するとコンテナも停止するため、Goroutine ダンプを取得できません。

この場合、Goroutine ダンプを取得するにはどうすればよいですか?

回避策

コンテナも停止しているため、Goroutineダンプを取得できません。

次のようにすれば、コンテナのログから goroutine ダンプを取得できると思います。

    docker-compose stop
  1. 実行中のコンテナを削除せずに停止します;
  2. kill -quit <プロセス ID>

  3. goroutine を標準エラー出力にダンプします。
  4. 以下は、コンテナー ログを取得するための docker コマンドです (-n

    はログの最後から表示する行数を指定します): リーリー

    以上がコンテナエントリポイントプロセスのゴルーチンをダンプするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。