LoginSignup
0
0
お題は不問!Qiita Engineer Festa 2024で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

Datadogでシステムの遅延処理を判断したい

Last updated at Posted at 2024-07-04

今回やりたいこと

特定画面のレスポンスの悪さに関する問合せが多く、
品質向上の1つとして、潜在化している遅延処理を洗い出してほしいと依頼がありました。
なので今回はDatadogを使って該当箇所を探す取組みについて
自分はインフラ担当では無いので、調べながらこの記事を書くことにしました。

Datadogとは

インフラ監視、アプリケーションのモニタリング、ログ管理などによって
システム運用のトラブル調査、最適化するためのサービスのこと

遅い処理を判断する機能があるか

Datadogの公式Doc「遅いトレースやエンドポイントを調査する」

本番環境においてアプリケーションのパフォーマンスに問題がある場合、 分散型トレーシングとプロファイリングによるコードスタックトレースのベンチマークを統合することで、 パフォーマンスのボトルネックを特定する強力な方法となります。 APM分散型トレーシングと Continuous Profiler の両方が有効になっているアプリケーションプロセスは、 自動的にリンクされます。

image.png


claudeに解説してもらう

分散型トレーシング:アプリケーション内のリクエストの流れを追跡します。
プロファイリング:コードの各部分の実行時間を測定します。
これらを組み合わせると、パフォーマンスの問題がどこにあるかを正確に特定できます。
Datadogでは、APM(アプリケーションパフォーマンスモニタリング)の分散型トレーシングと
Continuous Profilerを有効にすると、自動的にこれらのデータがリンクされます。

この方法を使うことで、開発者はアプリケーションの遅い部分を素早く見つけ出し、
効率的に改善できるようになります。

要するに、
リクエストの流れの追跡と、実行時間の計測を、
DatadogのAPM分散型トレーシングと、Continuous Profilerを有効にすることで可視化できて
遅い処理を判断できるんだと思います(理解度30%)

実際にやってみる

APMのトレーシング?は既にAPM→Tracesから見れるようでした
(設定方法調べに来た人居たら申し訳ない…)

対象はAPIとSQL、外部API連携箇所
Durationを見ると1時間でかなりの数がありました。

image.png

claudeにリスト化を依頼

image.png

API名が、80万件あるテーブル名を含んでいるものが多いので、
ここで挙げたAPIの中で、該当テーブルを参照するSQLのチューニングをやるべきだと考えました。
DB側での対応は難易度高いので一旦無し…(自分の技術力の低さ😇)

SQLでも同じく、時間の掛かっているものを一覧化します。
SQLはループで実行時間が遅くなる可能性もあるので、duration1秒以上を対象にします。

image.png

まとめ

APIとSQLともに同じようなものが遅くなっている様子です。
なので、今回はデータが非常に多いテーブルに対しての操作が時間掛かっていると想定して
該当API、該当SQLの調査・修正に入りたいと思います。
SQLチューニングであまり変わらない場合は、
画面側のデータの取得方法を変えたりなど検討します。

ちなみに、「Continuous Profilerを有効にする」について、有効になっていなかったのですが
トレーシングで、ある程度洗い出しできたので今回はやりませんでした。

image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0