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
790
Continuous Profiling in Go
Go Tech Talk【サイバーエージェント x ミラティブ】
の発表資料です。
tatsumack
April 15, 2022
Tweet
Share
Other Decks in Technology
See All in Technology
IPA&AWSダブル全冠が明かす、人生を変えた勉強法のすべて
iwamot
PRO
2
230
20250708オープンエンドな探索と知識発見
sakana_ai
PRO
4
1k
Rethinking Incident Response: Context-Aware AI in Practice
rrreeeyyy
1
880
Introduction to Bill One Development Engineer
sansan33
PRO
0
260
CDK Toolkit Libraryにおけるテストの考え方
smt7174
1
540
Copilot coding agentにベットしたいCTOが開発組織で取り組んだこと / GitHub Copilot coding agent in Team
tnir
0
170
Figma Dev Mode MCP Serverを用いたUI開発
zoothezoo
0
220
「Chatwork」のEKS環境を支えるhelmfileを使用したマニフェスト管理術
hanayo04
1
380
SREのためのeBPF活用ステップアップガイド
egmc
2
1.2k
LLM拡張解体新書/llm-extension-deep-dive
oracle4engineer
PRO
22
5.4k
対話型音声AIアプリケーションの信頼性向上の取り組み
ivry_presentationmaterials
3
900
スタックチャン家庭用アシスタントへの道
kanekoh
0
120
Featured
See All Featured
Build your cross-platform service in a week with App Engine
jlugia
231
18k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
KATA
mclloyd
30
14k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
138
34k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
357
30k
The Cost Of JavaScript in 2023
addyosmani
51
8.6k
Visualization
eitanlees
146
16k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
181
54k
Building Applications with DynamoDB
mza
95
6.5k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
5.9k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
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! ⁃ ミラティブでは高トラフィックなサービスの開発に挑戦したいバックエンド エンジニアを募集しています