Datadog Continuous Profiler を用いたパフォーマンス改善の事例紹介
株式会社ソーシャルPLUS / terandard
利用プラン | ツールの利用規模 | ツールの利用開始時期 | 事業形態 |
---|---|---|---|
Datadog Pro | 10名以下 | 2024年6月 | B to B |
利用プラン | Datadog Pro |
---|---|
ツールの利用規模 | 10名以下 |
ツールの利用開始時期 | 2024年6月 |
事業形態 | B to B |
導入の背景・解決したかった問題
導入背景
ツール導入前の課題
弊社のバックエンドでは Ruby on Rails、DB は Amazon Aurora (MySQL) を使用しています。リクエストがスパイクするとアプリケーション全体が遅延する問題がありました。特に処理に時間がかかっていたリクエストについて Datadog APM の Trace で状況を確認すると、空白期間があったり mysql2 の実行時間が長いにも関わらず RDS のスロークエリログには遅いクエリはなく、アプリケーション側での問題であることがわかっていましたが、具体的な問題点がわからず改善策が見つけられませんでした。
どのような状態を目指していたか
Ruby や C のメソッドレベルでボトルネックを特定し、パフォーマンス改善に繋げることを目指しました。
導入の成果
改善したかった課題はどれくらい解決されたか
Porfiler を導入したことにより、特定のリクエストにおける特定の時刻で実行されているメソッドや CPU の状況を確認できるようになりました。また別スレッドの状況も確認できるようになり、Ruby の GVL によるブロックが発生していることがわかりました。また処理に時間がかかっているメソッドも特定できたため、それらのメソッドの改善を行うことでリクエストの処理時間を短縮することができました。
どのような成果が得られたか
リクエスト全体の処理時間を 4 倍高速化することができました。またリクエストがスパイクしてもアプリケーション全体が遅延することがなくなりました。詳しくは弊社の 技術ブログ に記載しています。
導入時の苦労・悩み
料金体系の理解が難しいことに加えて、ページによって記載されている料金が異なったりするなど、導入によってどの程度のコストがかかるのかがわかりにくかったです。
導入に向けた社内への説明
上長・チームへの説明
以前からパフォーマンス調査/改善を行っており、現在対応できる範囲の問題は解決し尽くしている状態でした。これ以上はツールの導入が必要であることを説明し、RubyKaigi で発表されていた内容を参考に Datadog Profiler の導入を提案しました。一方で成果をあげられるかが不明だったことに加えて事前にコストの見積もりが取れなかったので、「コストを見ながら1ヶ月間お試しで導入する」という形で合意を取りました。
活用方法
よく使う機能
- CPU 使用率が高い処理を可視化する
- Trace と組み合わせて、特定のリクエストにおけるボトルネックを調査する
- スレッド単位で情報を可視化する
ツールの良い点
- Profiler を有効にするために必要な変更が少なく、簡単に導入できる
- Profiler 導入における負荷のオーバーヘッドが少ない
- Trace や Log と連携されているため、シームレスに情報を確認できる
ツールの課題点
- 料金体系が複雑で理解しにくい
- ドキュメントが更新されていない
- 機能が多いので使いこなすのが難しい
ツールを検討されている方へ
Trace だけでは分からなかったことが Profiler を用いることで分かるようになるので、パフォーマンス改善を行いたい場合はおすすめします。
しかしコストは意外とかかるので、事前にサポートに連絡してコミットメントの利用を検討することをおすすめします。 また Profiler 自体の料金だけでなく、Datadog と AWS の通信量に対する従量課金も発生するので考慮しておくと良いと思います。
株式会社ソーシャルPLUS / terandard
よく見られているレビュー
株式会社ソーシャルPLUS / terandard
レビューしているツール
目次
- 導入の背景・解決したかった問題
- 活用方法