Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Continuous Profiling in Go

Continuous Profiling in Go

Avatar for tatsumack

tatsumack

April 15, 2022
Tweet

Other Decks in Technology

Transcript

  1. 自己紹介 ▪ 牧野 龍彦
 ⁃ @tatsumack
 
 ▪ Mirrativ バックエンドエンジニア


    ⁃ リード兼マネージャー
 ⁃ 前職はDeNAでゲーム開発
 ⁃ 2019年8月に入社して、現在はバックエンド基盤開発

  2. Continuous Profilingとは ▪ Continuous Profilingを行うために必要なこと【再掲】
 ⁃ 本番環境でオーバーヘッドが少なく安全にプロファイリングを実行できる か
 →Goにはpprofがある
 


    ⁃ どこにプロファイリング結果を保存するか
 ⁃ 保存したプロファイリング結果をどのようにして検索・抽出するか
 →これらを何とかしたい

  3. profefe ▪ Agent
 ⁃ 定期的にプロファイリングを実行し、Collectorに送信する
 • デフォルトでは1分おきに10秒間プロファイリングを実行
 ⁃ アプリケーションに組み込んで使う
 •

    
 
 
 
 ⁃ 異なるインスタンスで同時にプロファイリングが実行されてシステム全体 の性能が劣化することがないように、ランダムにsleepを入れることで、プ ロファイリングの実行タイミングを分散するような工夫がされている

  4. profefe ▪ Collector
 ⁃ プロファイルを受け取るサービス
 ⁃ プロファイルを保存するAPIと検索・抽出を行うAPIが提供されている
 • プロファイル保存時にlabelを指定することができ、プロファイルを検 索するときの条件に指定することができる


    • 検索APIは検索条件にマッチしたpprofをmergeして返してくれる
 ⁃ プロファイルを保存するストレージは差し替えが可能になっており、AWS S3・Google Cloud Storageなどを選択することができる

  5. まとめ ▪ GoはContinuous Profilingを実践しやすい環境が整っている
 ⁃ pprof
 ⁃ profefe
 
 ▪

    We are hiring!
 ⁃ ミラティブでは高トラフィックなサービスの開発に挑戦したいバックエンド エンジニアを募集しています