Reading Time: 1 minutes
この記事の所要時間: 約 5分

こんにちは、ManageEngineエンジニアの園部です。
本日は、クラウドNoSQLのDynamoDBの監視についての話題をお届けします。

NoSQLデータベースは、近年のデータベースアプリケーションで人気が上昇しています。NoSQLデータベースの人気急上昇の理由は、動的でクラウドリソースに親和性があり、ビッグデータの処理に向いているためです。
特に、AWSのDynamoDBは、高い拡張性、可用性、信頼性に優れており、NoSQLデータベースの特長を生かしたサービスと言えます。

DynamoDBを使用したアプリケーションで高パフォーマンスを維持するためには、監視すべき重要な項目がいくつかあります。これらを見落とすと、アプリケーションのパフォーマンスが低下する危険性があります。DynamoDBのパフォーマンスを向上させるために監視する必要がある項目を4つ紹介します。

目次

制限されたリクエストとスループット

DynamoDB スロットルリクエストのグラフ

アプリケーションの一貫性のある低レイテンシーのパフォーマンスを確保するには、アプリケーションの動作に見合った十分な読み込み/書き込み操作のスループットを事前に定義します。
読み込み/書き込みリクエストが設定した制限を超えた場合(消費スループットがプロビジョニングされたスループットを超えた場合)、DynamoDBでは、リクエストが制限されます(リクエストスロットル)。これにより、指定した時間内に実行できるリクエスト数が制限されてしまいます。

このプロセスは、「リーキーバケットアルゴリズム」と呼ばれる概念に基づいており、アプリケーションがリクエストで溢れることを防ぎます。リクエストが抑制された場合、DynamoDB APIクライアントは自動的にリクエストを再実行します。

監視すべき項目

  • 読み込み/書き込みキャパシティユニット使用量 (Consumed Read/Write Capacity Units)
    読み込み/書き込みキャパシティユニットを監視し、読み込み・書き込み動作の予期せぬ急上昇や低下をいち早く発見できます。
    1つの読み込みキャパシティユニットは、最大4KBのサイズのアイテムを1秒で読み込みます。4KBを超えるアイテムを読み込む場合、読み込みキャパシティの単位が多くなります。1書き込みキャパシティは、サイズが1KBまでのアイテムを1秒で書き込みます。
  • バーストキャパシティ
    DynamoDBでは、未使用のキャパシティの一部を、読み込み/書き込みスループットの「バースト」に備えて確保しています。
    バーストキャパシティを使用して、リクエストの抑制を回避可能です。バーストキャパシティが使用可能な場合、スループット制限を超えるリクエストも実行可能な場合があります。
    ただし、バーストキャパシティは時間の経過とともに変化し、常に使用できるとは限りません。この値を監視し、Webシステムの急な動作にも耐えられるかを確認しておきましょう。

遅延(レイテンシー)

レイテンシーは、Webシステムを利用するユーザーの観点では大変重要な指標です。
DynamoDBでは様々なスケールのアプリケーションにおいても、数ミリ秒台のパフォーマンスを実現できるように設計されています。アプリケーションの利用が拡大し、大量データを格納するようになった場合も、DynamoDBは高速で一貫性のあるパフォーマンスを提供し続けます。同じリージョンにあるインスタンスを使用している場合、レイテンシーの監視が役立ちます。

エラー

リクエストが失敗した場合、DynamoDBは、以下の3つのコンポーネントを含むエラーを返します。

  • HTTPステータスコード
  • エラーメッセージ
  • 例外名

監視すべき項目

  • システムエラー
    エラーコード500(サーバーエラー)になったリクエストの数を監視しましょう。通常は0が推奨されます。
  • ユーザーエラー
    エラーコード400(不正なリクエスト)になったリクエストの数を監視しましょう。クライアントがDynamoDBと正しく通信している場合、この項目は0になります。
  • 条件付きチェックが失敗したリクエスト
    アイテムが変更可能かを表す書き込みリクエストの条件を参照します。失敗リクエストの増加は送信されたリクエストの問題を示します。エラーコード400(不正なリクエスト)が返された場合でも、ユーザーエラーとは別のものと見なされます。

グローバルセカンダリインデックス

DynamoDBでは、プライマリキーの値を指定することでテーブル内の項目にすばやくアクセスできます。しかし、アプリケーション側では、複数のセカンダリキーを使用することの方が効率的である場合もあります。

例として、ベストセラー本を記録している「人気の本」という名前のテーブルを考えてみましょう。各アイテムは、パーティションキー(ID)およびソートキー(本のタイトル)によって識別されます。
アプリケーションはアクションの実行中、IDがパーティションキーであるために、本のタイトルだけに基づいて「人気の本」からデータを取得するのに苦労する場合があります。IDと本のタイトルに基づいて上位2冊の本を表示する方がはるかに簡単です。

人気の本

ID

タイトル

購入数

101

The Kite Runner

1,990

102

1984

1,790

103

Norwegian Wood

1,700

ここでは、グローバルセカンダリインデックス(GSI)が役立ちます。GSIにはベーステーブルから選択した属性が含まれ、テーブルとは異なる主プライマリキーによって編成されます。これにより、キー以外の属性に対するクエリーのパフォーマンスが向上します。新しいインデックスにリソースを割り当てる場合、テーブルが大きくなると時間がかかる可能性があるため、記憶域を考慮する必要があります。

監視すべき項目

  • 読み込み/書き込みキャパシティユニット
  • GSIスループットと制限されたリクエスト
  • オンラインインデックス制限イベント
  • オンラインインデックス書き込みキャパシティ消費

すべてのGSIメトリクスはこちら

まとめ

DynamoDBを使用したアプリケーションで、監視すべき4項目をご紹介しました。

ポイント
以下の項目を監視していきましょう!
  • 制限されたリクエストとスループット
    • 読み込み/書き込みキャパシティユニット使用量
    • バーストキャパシティ
  • 遅延(レイテンシー)
  • エラー
    • システムエラー
    • ユーザーエラー
    • 条件付きチェックが失敗したリクエスト
  • グローバルセカンダリインデックス
    • 読み込み/書き込みキャパシティユニット
    • GSIスループットと制限されたリクエスト
    • オンラインインデックス制限イベント
    • オンラインインデックス書き込みキャパシティ消費

DynamoDBを初めて使用する場合は、上記4項目を監視してアプリケーションのパフォーマンスを詳細に把握し、アプリケーションを利用するエンドユーザーのパフォーマンス体感を最適化しましょう。

※ 記事中のグラフイメージは、ManageEngineが提供するアプリケーションパフォーマンス管理ソフト『Applications Manager』の画面スクリーンショットです。
Applications Managerを活用すると、特定の作り込みをすることなく、簡単な設定だけでDynamoDBの監視をはじめることができます。

DynamoDBのパフォーマンス監視要件でお困りの際には、ぜひApplications Managerをご検討ください!

Applications Manager

サーバー・データベースなどのWebシステムを一元管理を実現するアプリケーションパフォーマンス管理ソフトウェア。設定が簡単で、グラフやマップ表示で瞬時に状況を把握できます。
製品概要DynamoDB監視機能のご紹介無料版ダウンロード
※永年無料版の利用をご希望の方は、30日間フル機能ご利用いただける「評価版」をダウンロードしてください。
30日が過ぎると自動的に5モニターまで監視可能の永年無料版となります。