Slide 1

Slide 1 text

データベースの負荷を紐解く ハッシュタグ:#jawsdays2025 #jawsug #jawsdays2025_c emi Track C-6 DevelopersIO流!アマゾンの奥地で技術の限界に挑戦:LT7人衆、熱き戦い

Slide 2

Slide 2 text

今日話すこと ハッシュタグ:#jawsdays2025 #jawsug #jawsdays2025_c ● データベースに起因する様々な問題 ● データベースの負荷を紐解く ● RDS Performance Insights

Slide 3

Slide 3 text

データベースに起因する様々な問題 ハッシュタグ:#jawsdays2025 #jawsug #jawsdays2025_c

Slide 4

Slide 4 text

データベースに起因する様々な問題 ハッシュタグ:#jawsdays2025 #jawsug #jawsdays2025_c データベースに起因するお問い合わせ RDS の負荷が高く処理が遅い。 リードレプリカを導入したが、 効果が見られない

Slide 5

Slide 5 text

データベースに起因する様々な問題 ハッシュタグ:#jawsdays2025 #jawsug #jawsdays2025_c データベースに起因するお問い合わせ RDS の負荷が高く処理が遅い。 リードレプリカを導入したが、 効果が見られない 良さそうでは…?

Slide 6

Slide 6 text

データベースの負荷を紐解く ハッシュタグ:#jawsdays2025 #jawsug #jawsdays2025_c

Slide 7

Slide 7 text

データベースの負荷を紐解く ハッシュタグ:#jawsdays2025 #jawsug #jawsdays2025_c 複数のアプリケーションやクライアントが RDS にアクセスしている

Slide 8

Slide 8 text

データベースの負荷を紐解く ハッシュタグ:#jawsdays2025 #jawsug #jawsdays2025_c 複数のアプリケーションやクライアントが RDS にアクセスしている セッション セッション セッション

Slide 9

Slide 9 text

データベースのセッションのステータスは二つ ● Active(アクティブ)セッション ○ クエリ実行中 ■ CPU を使用してクエリを実行している ■ 他の処理が終わるのを待っている(待機 wait) ● Idle(アイドル)セッション ○ 接続だけして待機している(クエリを実行していない) データベースの負荷を紐解く ハッシュタグ:#jawsdays2025 #jawsug #jawsdays2025_c

Slide 10

Slide 10 text

データベースのセッションのステータスは二つ ● Active(アクティブ)セッション ○ クエリ実行中 ■ CPU を使用してクエリを実行している ■ 他の処理が終わるのを待っている(待機 wait) ● Idle(アイドル)セッション ○ 接続だけして待機している(クエリを実行していない) データベースの負荷を紐解く ハッシュタグ:#jawsdays2025 #jawsug #jawsdays2025_c

Slide 11

Slide 11 text

データベースの負荷を紐解く ハッシュタグ:#jawsdays2025 #jawsug #jawsdays2025_c アクティブなセッションには CPU を使っているものと、 CPU を使わずに他の処理が終わるのを待たされているものがある

Slide 12

Slide 12 text

アクティブなセッションには CPU を使っているものと、 CPU を使わずに他の処理が終わるのを待たされているものがある データベースの負荷を紐解く ハッシュタグ:#jawsdays2025 #jawsug #jawsdays2025_c

Slide 13

Slide 13 text

アクティブなセッションには CPU を使っているものと、 CPU を使わずに他の処理が終わるのを待たされているものがある データベースの負荷を紐解く ハッシュタグ:#jawsdays2025 #jawsug #jawsdays2025_c

Slide 14

Slide 14 text

アクティブなセッションには CPU を使っているものと、 CPU を使わずに他の処理が終わるのを待たされているものがある データベースの負荷を紐解く ハッシュタグ:#jawsdays2025 #jawsug #jawsdays2025_c Active な待機(Wait)

Slide 15

Slide 15 text

データベースのセッションのステータスは二つ ● Active(アクティブ)セッション ○ クエリ実行中 ■ CPU を使用してクエリを実行している ■ 他の処理が終わるのを待っている ● Idle(アイドル)セッション ○ 接続だけして待機している(クエリを実行していない) データベースの負荷を紐解く ハッシュタグ:#jawsdays2025 #jawsug #jawsdays2025_c CPU を掴んでいるのに 他の処理を待たされていて 実質 CPU が使われていない 非効率で勿体ない

Slide 16

Slide 16 text

パフォーマンス管理のための指標 ● アクティブセッション ○ CPU を使用してクエリを実行している(On CPU) ○ 他の処理が終わるのを待っている(Waiting) ● データベースロード(DBLoad) ○ 1 秒ごとのアクティブセッションの数を時系列で見るメトリクス ○ ≒1 秒間の平均アクティブセッション Average Active Sessions(AAS) データベースの負荷を紐解く ハッシュタグ:#jawsdays2025 #jawsug #jawsdays2025_c

Slide 17

Slide 17 text

RDS Performance Insights ハッシュタグ:#jawsdays2025 #jawsug #jawsdays2025_c

Slide 18

Slide 18 text

RDS Performance Insights ハッシュタグ:#jawsdays2025 #jawsug #jawsdays2025_c RDS Performance Insights は RDS の性能が出ない場合や エラーの原因を調査する際に大活躍するイチオシのサービス

Slide 19

Slide 19 text

RDS Performance Insights ハッシュタグ:#jawsdays2025 #jawsug #jawsdays2025_c DB セッションの状態を 1 秒に 1 回サンプリングし 時系列に並べて状況を可視化 …… データベースの 待機イベント(Wait Events)の種類 • I/O(入出力)関連の待機 • ロック関連の待機 • IPC(プロセス間通信)関連の待機 • CPU 使用 • 最大 vCPU

Slide 20

Slide 20 text

RDS Performance Insights ハッシュタグ:#jawsdays2025 #jawsug #jawsdays2025_c パフォーマンスの問題の有無は Average Active Sessions(AAS) (≒ DBLoad)が DB インスタンスの最大 CPU サイズ (8vCPU とか、16vCPU とか)を超えているかどうかで判断できる ……

Slide 21

Slide 21 text

RDS Performance Insights ハッシュタグ:#jawsdays2025 #jawsug #jawsdays2025_c どのクエリやユーザーが負荷をかけているか分かる

Slide 22

Slide 22 text

RDS Performance Insights ハッシュタグ:#jawsdays2025 #jawsug #jawsdays2025_c データベースに起因するお問い合わせ RDS の負荷が高く処理が遅い。 リードレプリカを導入したが、 効果が見られない

Slide 23

Slide 23 text

RDS Performance Insights ハッシュタグ:#jawsdays2025 #jawsug #jawsdays2025_c データベースに起因するお問い合わせ RDS の負荷が高く処理が遅い。 リードレプリカを導入したが、 効果が見られない パフォーマンス悪化の原因が本当に読み取り負荷なのか、 どういった処理が遅いのか等を詳細に調査する必要がある • CPU 負荷が高い • ロックの多発による待機 • 不要なフルスキャン • 適切なインデックスが設定されていない • JOIN の最適化不足 etc…

Slide 24

Slide 24 text

CloudWatch Database Insights も 気になる…! ハッシュタグ:#jawsdays2025 #jawsug #jawsdays2025_c