Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Continuous Profiling in Go
Search
tatsumack
April 15, 2022
Technology
0
880
Continuous Profiling in Go
Go Tech Talk【サイバーエージェント x ミラティブ】
の発表資料です。
tatsumack
April 15, 2022
Tweet
Share
Other Decks in Technology
See All in Technology
顧客との商談議事録をみんなで読んで顧客解像度を上げよう
shibayu36
0
190
Amazon S3 Vectorsを使って資格勉強用AIエージェントを構築してみた
usanchuu
3
440
Context Engineeringの取り組み
nutslove
0
310
OCI Database Management サービス詳細
oracle4engineer
PRO
1
7.4k
Bill One 開発エンジニア 紹介資料
sansan33
PRO
4
17k
広告の効果検証を題材にした因果推論の精度検証について
zozotech
PRO
0
140
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
42k
CDKで始めるTypeScript開発のススメ
tsukuboshi
1
350
FinTech SREのAWSサービス活用/Leveraging AWS Services in FinTech SRE
maaaato
0
130
GSIが複数キー対応したことで、俺達はいったい何が嬉しいのか?
smt7174
3
150
Embedded SREの終わりを設計する 「なんとなく」から計画的な自立支援へ
sansantech
PRO
3
2.3k
15 years with Rails and DDD (AI Edition)
andrzejkrzywda
0
180
Featured
See All Featured
Into the Great Unknown - MozCon
thekraken
40
2.2k
Crafting Experiences
bethany
1
48
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
3.9k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.3k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
240
Design in an AI World
tapps
0
140
Building an army of robots
kneath
306
46k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
160
Faster Mobile Websites
deanohume
310
31k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
100
Measuring & Analyzing Core Web Vitals
bluesmoon
9
750
Writing Fast Ruby
sferik
630
62k
Transcript
STRICTLY CONFIDENTIAL GoでContinuous Profilingをやっている話 2022.04.14 Tatsuhiko Makino © 2022 Mirrativ,
Inc.
自己紹介 ▪ 牧野 龍彦 ⁃ @tatsumack ▪ Mirrativ バックエンドエンジニア
⁃ リード兼マネージャー ⁃ 前職はDeNAでゲーム開発 ⁃ 2019年8月に入社して、現在はバックエンド基盤開発
Continuous Profiling ▪ ざっくり言うと、本番環境で継続的にプロファイリングすること ⁃ 本番環境でのみ発生するパフォーマンスの問題を捉えることができる ⁃ 継続的にプロファイリングすることで問題が発生する前後の状態を比較 することができる
Continuous Profiling ▪ Continuous Profilingを行うために必要なこと ⁃ 本番環境でオーバーヘッドが少なく安全にプロファイリングを実行できる か ⁃ どこにプロファイリング結果を保存するか
⁃ 保存したプロファイリング結果をどのようにして検索・抽出するか
GoのProfiling Tool ▪ pprof ⁃ プロファイリングのためのGoの標準ツール ⁃ オーバーヘッドが小さく、本番環境でも利用できる • pprofの仕組み
https://research.swtch.com/pprof
Continuous Profilingとは ▪ Continuous Profilingを行うために必要なこと【再掲】 ⁃ 本番環境でオーバーヘッドが少なく安全にプロファイリングを実行できる か →Goにはpprofがある
⁃ どこにプロファイリング結果を保存するか ⁃ 保存したプロファイリング結果をどのようにして検索・抽出するか →これらを何とかしたい
profefe ▪ MirrativではprofefeというOSSを導入した ⁃ https://github.com/profefe/profefe ⁃ パブリッククラウドなど各社サービスを提供しているが、より柔軟な運用 をしたかった
profefe ▪ profefeの仕組み ⁃ Collector と Agent というコンポーネントがある
profefe ▪ Agent ⁃ 定期的にプロファイリングを実行し、Collectorに送信する • デフォルトでは1分おきに10秒間プロファイリングを実行 ⁃ アプリケーションに組み込んで使う •
⁃ 異なるインスタンスで同時にプロファイリングが実行されてシステム全体 の性能が劣化することがないように、ランダムにsleepを入れることで、プ ロファイリングの実行タイミングを分散するような工夫がされている
profefe ▪ Collector ⁃ プロファイルを受け取るサービス ⁃ プロファイルを保存するAPIと検索・抽出を行うAPIが提供されている • プロファイル保存時にlabelを指定することができ、プロファイルを検 索するときの条件に指定することができる
• 検索APIは検索条件にマッチしたpprofをmergeして返してくれる ⁃ プロファイルを保存するストレージは差し替えが可能になっており、AWS S3・Google Cloud Storageなどを選択することができる
profefe ▪ ミラティブでの運用例 ⁃ 性能劣化しているエンドポイントを見つける • p90を計測して、日次でチェックしている ⁃
profefeで該当期間のpprofを取得する • ⁃ go tool pprofで分析 •
まとめ ▪ GoはContinuous Profilingを実践しやすい環境が整っている ⁃ pprof ⁃ profefe ▪
We are hiring! ⁃ ミラティブでは高トラフィックなサービスの開発に挑戦したいバックエンド エンジニアを募集しています