Amazon RDS Performance Insights オンデマンド分析の活用
2023.8.25
Topics
はじめに
Performance Insights に、オンデマンドで分析できる機能が追加されました。
まだ、出たばかりの機能ということもありドキュメントやコンソール上で本機能の名称がバラバラなため、本記事では「オンデマンド分析」と定義しております。
Amazon RDS (Relational Database Service) Performance Insights は、お客様がデータベースのパフォーマンスメトリクスをオンデマンドで分析し、パフォーマンスの問題をトラブルシューティングできるようになりました。
機械学習モデルを活用して、選択した期間中のパフォーマンスのボトルネックを特定し、次に何をすべきかアドバイスを提供します。
Amazon RDS Performance Insights はオンデマンド分析エクスペリエンスを提供します
この機能を用いることで、機械学習を使用したデータベース負荷の分析がいつでも実施できるようになりました。
今までは、ユーザー自らがメトリクス等から負荷状況を推測して改善を行っていましたが、このオンデマンド分析を行うことで「どこ」を「どう」見ればいいのかをわかりやすく教えてくれます。
オンデマンド分析の制約
ドキュメント等に明確な記載が無いですが、検証する際に色々と制限があったため以下記載いたします。
- Performance Insights の保存期間が 1 か月以上
- 新規インスタンスを起動してから 24 時間たったインスタンスのみ
- 使用できる DB エンジン:Aurora MySQL,Aurora PostgreSQL,RDS for PostgreSQL
Analyzing database performance for a period of time – Amazon Relational Database Service
上記の要件を満たせていない場合だと、Performance Insights の画面で「Analyze performance」ボタンと、「Performance analysis reports – 新規」タブが表示されません。
また、「Analyze performance」ボタンがあっても分析することができない場合もあるためお気をつけください。
エラーメッセージは以下の通りです。
The analysis period must be more than 5 minutes and less than 144 hours (6 days), and the start time must be at least 24 hours after the beginning of your retention period
分析期間は 5 分以上 144 時間(6 日)未満とし、開始時刻は保存期間の開始から少なくとも 24 時間後とする。
エラーメッセージから起動したインスタンスの 24 時間以降のデータしかできないのかなと思いましたが、インスタンスを起動して 24 時間以降に、起動後 24 時間以内のデータを分析してもできました。
なので、新規起動したてのインスタンスでは本機能が使えない制限のようです。
オンデマンド分析の仕方
今回は mysqlslap を使って負荷をかけた環境に対して、新機能のオンデマンド分析を行ってみたいと思います。
準備
負荷をかける用に EC2(Amazon Linux2) を用意しましたが mysqlslap がインストールされていなかったので MySQL 8.0 をインストールするとついてきました。
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 yum -y localinstall https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm yum install mysql-community-server -y
実行したコマンド
ある程度の負荷が与えられれば問題ないので適当なサンプルを実行しています。
mysqlslap \ --no-defaults --auto-generate-sql --engine=innodb --auto-generate-sql-add-autoincrement \ --host=cold-airflow-aurora-peformance.cluster-co4nqylz6jpl.us-east-1.rds.amazonaws.com --port=3306 -u root -ppassword\ --number-int-cols=10 \ --number-char-cols=10 \ --iterations=10 \ --concurrency=50 \ --auto-generate-sql-write-number=1000 \ --number-of-queries=1000 \ --auto-generate-sql-load-type=read
実行結果
[root@ip-10-0-1-22 ~]# mysqlslap \ > --no-defaults --auto-generate-sql --engine=innodb --auto-generate-sql-add-autoincrement \ > --host=cold-airflow-aurora-peformance.cluster-co4nqylz6jpl.us-east-1.rds.amazonaws.com --port=3306 -u root -ppassword\ > --number-int-cols=10 \ > --number-char-cols=10 \ > --iterations=10 \ > --concurrency=50 \ > --auto-generate-sql-write-number=1000 \ > --number-of-queries=1000 \ > --auto-generate-sql-load-type=read mysqlslap: [Warning] Using a password on the command line interface can be insecure. Benchmark Running for engine innodb Average number of seconds to run all queries: 3.084 seconds Minimum number of seconds to run all queries: 2.994 seconds Maximum number of seconds to run all queries: 3.181 seconds Number of clients running queries: 50 Average number of queries per client: 20
mysqlslap の詳細については以下をご覧ください。
第 23 回 mysqlslap を使って負荷テストをしてみよう | gihyo.jp
MySQL :: MySQL 8.0 リファレンスマニュアル :: 4.5.8 mysqlslap — ロードエミュレーションクライアント
オンデマンド分析を使ってレポートを作成
先程実行した負荷を分析してみます。
使い方はものすごく簡単で、Performance Insights の画面から「Analyze performance」を選択します。
そうすると、分析する期間を選択できるモードに変わります。
グラフ上の選択で期間を設定することもできます。
もしくは、CloudWatch 等でおなじみの画面で入力することもできます。
あとは、任意でタグを指定することができます。
選択した内容で問題がなければ、「Analyze performance」を押すと分析が開始されます。
オンデマンド分析結果については、「Performance analysis reports – 新規」タブから確認することができます。
オンデマンド分析レポートの詳細確認
レポートを選択すると分析結果の詳細を見ることができます。
セクションは大きく以下 4 つに区分されます。
- Overview
- Database load insights
- Related Metrics(出るときと出ない時がある)
- Analysis and Recommendations(出るときと出ない時がある)
以降で、それぞれについて見ていきます。
Overview
ここでは、基本的な情報を確認することができます。
- データベース
- DB エンジン
- レポート作成日時
- 分析開始日時
- 分析終了日時
- 分析結果
Database load insights
ここでは、データベース分析のグラフと同じものを確認することができます。
また、簡単な評価が記載されています。
Low severity
DB load below vCPU for the time range. No performance issues detected.
↓ 翻訳
DB 負荷が時間範囲の vCPU を下回った。パフォーマンスの問題は検出されませんでした。
Related Metrics
このセクションは負荷の大きさに応じてあったりなかったりするようです。
ここでは、実際にどのメトリクスやデータで問題があったかをそれぞれのグラフで表示してくれます。
今回検証した分析だと、3 つほど表示されてました。
- Innodb Buffer Pool Read Request
- Questions
- Total Query Time
これはすごく便利だなと思います。
どのメトリクスで判断できたかや、Normally や Anomaly でどれぐらい乖離していたのかを比較することができます。
あまりデータベースに詳しくない方でも、「ここを見ればいいよ」とポイントを提示してくれるため改善に繋げやすいと思います。
Analysis and Recommendations
このセクションも負荷の大きさに応じてあったりなかったりするようです。
ここでは、具体的にどうすればいいのか Next Action を教えてくれます。
見る限り DevOps Guru for RDS のレコメンド内容と同じ気がします。
ちなみに、点線のところにカーソルを合わせるとより詳細な情報が表示されます。
おまけ
このアップデートと同じタイミングかは定かではないですが、他にも色々とアップデートがあったので軽くご紹介します。
データベース負荷 グラフの Table タイプ
前のダッシュボードのときは、データベース負荷グラフでは、2 つのタイプのグラフに変更することが可能でした。
アップデートによってこの機能がなくなってましたが、再度復活して「Table」が追加されていました。
縦線と線だと実際どれぐらいの数値なのかが、カーソルを合わせないと見れなかったです。
今回追加された Table の場合は数値で表示されるので具体的にどれぐらいの値なのかをひと目で判断することができます。
時間範囲指定で「絶対的な範囲」が追加
今まで、「相対的な範囲」しか選択できず、「この時間帯が見たい」といったときは範囲をいい感じに指定していました。
それが、「絶対的な範囲」が追加されたことにより、ピンポイントで「この時間帯が見たい」が簡単に実現できるようになりました。
これは嬉しいアップデートですね。
パフォーマンススキーマの無効状態のお知らせ
MySQL 限定の案内ですが、パフォーマンススキーマが有効になっていないデータベースで Performance Insights を開くと一番上にお知らせしてくれるようになりました。
前までは、分析結果を見て情報量や内容が変わっていれば有効されていないという判断をしていましたが、それをお知らせしてくれるのですごくわかりやすくなりました。
まとめ
Performance Insights は、データ収集に強い機能でしたが、今回のアップデートで分析機能を備えたことで、これ一つでデータ収集から分析まで行うことが可能になりました。
データベースに詳しくない方でも、この機能を活用することでデータベースの負荷を簡単に分析改善することができます。
参考記事
Amazon RDS Performance Insights provides an on-demand analysis experience
Analyzing database performance for a period of time – Amazon Relational Database Service
mysqlslap による mysql ベンチマーク解説 – Qiita
MySQL :: MySQL 8.0 リファレンスマニュアル :: 4.5.8 mysqlslap — ロードエミュレーションクライアント
テックブログ新着情報のほか、AWSやGoogle Cloudに関するお役立ち情報を配信中!
Follow @twitter2021年新卒入社。インフラエンジニアです。RDBが三度の飯より好きです。 主にデータベースやAWSのサーバレスについて書く予定です。あと寒いのは苦手です。
Recommends
こちらもおすすめ
-
Amazon RDS のパラメータグループを比較する
2024.3.7
-
Amazon RDS で推奨事項を表示する機能がリリースされました
2023.12.28
-
【ハンズオン】AWSで実用的なWordPressを構築してみる!
2022.8.31
-
約65%のコスト削減!AWS開発環境を見直すコスト最適化で無駄を排除
2023.12.19
Special Topics
注目記事はこちら
データ分析入門
これから始めるBigQuery基礎知識
2024.02.28
AWSの料金が 8 %割引になる!
『AWSの請求代行リセールサービス』
2023.01.15