ECS上のgo製プログラムのプロファイル覗き見る

  • 3
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

SSHトンネリングに必要な情報を得るための手順が多くて忘れるのでメモ。
うっかりsudo忘れる。

前提

goのpprofについては

とか

とか参照。
当然profiler動いてなきゃ話にならんので注意。

トンネリング

  1. ECSのタスク選ぶ
  2. instanceのIP見る
  3. sshで入ってsudo su -
  4. docker psで、対象サービスのコンテナ探してIDを確認

    $ docker ps -f name=api-server --format="{{.ID}}"
    123a456b78
    
  5. docker inspectで、対象コンテナIDからコンテナのIPアドレス取得

    $ docker inspect --format="{{ .NetworkSettings.IPAddress }}" 123a456b78
    172.17.0.1
    
  6. ssh抜ける

  7. localhostの適当なポートに、指定インスタンス経由でコンテナのプロファイラのポートをトンネリングさせる

    # ssh <instanceIP> -L <port>:<container IP>:<prof port>
    $ ssh 56.64.122.32 -L 9999:172.17.0.1:33680
    

プロファイラ見る

go tool pprof localhost:9999/debug/pprof/profile