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

王林
リリース: 2024-02-08 23:33:29
転載
883 人が閲覧しました

如何转储容器入口点进程的 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 までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!