Neptune サーバーレス DB クラスターの容量スケーリング - Amazon Neptune

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Neptune サーバーレス DB クラスターの容量スケーリング

Neptune サーバーレス DB クラスターのセットアップは、通常のプロビジョニングクラスターの設定と似ていますが、スケーリングの最小単位と最大単位を追加設定し、インスタンスタイプを db.serverless に設定します。スケーリング構成は Neptune 容量ユニット (NCU) で定義され、それぞれ 2 GiB (ギビバイト) のメモリ (RAM) と、関連する仮想プロセッサ容量 (vCPU) とネットワークで構成されています。これは ServerlessV2ScalingConfiguration オブジェクトの一部として設定され、次のように JSON で表されます。

"ServerlessV2ScalingConfiguration": { "MinCapacity": (minimum NCUs, a floating-point number such as 1.0), "MaxCapacity": (maximum NCUs, a floating-point number such as 128.0) }

特定の時点で、各 Neptune ライターまたはリーダーインスタンスには、そのインスタンスによって現在使用されている NCU の数を表す浮動小数点数で測定される容量があります。インスタンスレベルで CloudWatch ServerlessDatabaseキャパシティメトリクスを使用して、特定の DB インスタンスが現在使用している NCUsの数を調べることができます。また、NCUUtilization メトリクスを使用して、インスタンスが使用している最大キャパシティの割合を調べることができます。これらのメトリクスは両方とも DB クラスターレベルでも使用でき、DB クラスター全体の平均リソース使用率を示します。

Neptune サーバーレス DB クラスターを作成するときは、すべてのサーバーレスインスタンスの Neptune 容量ユニット (NCU) の最小数と最大数の両方を設定します。

指定する最小 NCU 値は、DB クラスター内のサーバーレスインスタンスを縮小できる最小サイズを設定します。同様に、最大 NCU 値は、サーバーレスインスタンスを拡張できる最大サイズを設定します。設定できる最高の最大 NCU 値は 128.0 NCU であり、最低の最小値は 1.0 NCU です。

Neptune は、CPU、メモリ、ネットワークなどのリソースの使用状況を監視することによって、各 Neptune サーバーレスインスタンスの負荷を継続的に追跡します。負荷は、アプリケーションのデータベース操作、サーバーのバックグラウンド処理、その他の管理タスクによって発生します。

サーバーレスインスタンスの負荷が現在の容量の制限に達するか、Neptune が他のパフォーマンス問題を検出すると、インスタンスは自動的にスケールアップします。インスタンスの負荷が低下すると、設定された最小容量単位に向かって容量がスケールダウンし、CPU 容量がメモリより先に解放されます。このアーキテクチャでは、制御されたステップダウン方式でリソースを解放でき、需要の変動に効果的に対処できます。

リーダーインスタンスはライターインスタンスと一緒にスケーリングすることも、プロモーション層を設定して個別にスケーリングすることもできます。プロモーション層 0 と 1 のリーダーインスタンスは、ライターと同時にスケーリングされるため、フェイルオーバー時にライターからワークロードを迅速に引き継ぐために、適切な容量に合わせてサイズ調整されます。プロモーション層 2 ~ 15 のリーダーは、ライターインスタンスとは無関係に、また互いに独立してスケーリングします。

高可用性を確保するために Neptune DB クラスターをマルチ AZ クラスターとして作成した場合、Neptune サーバーレスはデータベースの負荷に応じて、すべての AZ のインスタンスをスケールアップおよびスケールダウンします。セカンダリ AZ のリーダーインスタンスのプロモーション層を 0 または 1 に設定すると、プライマリ AZ のライターインスタンスの容量に合わせてスケールアップまたはスケールダウンできるため、いつでも現在のワークロードを引き継ぐことができます。

注記

Neptune DB クラスターのストレージは、クラスターをマルチ AZ クラスターとして作成したかどうかにかかわらず、3 つの AZ に分散したすべてのデータの 6 つのコピーで構成されます。ストレージレプリケーションはストレージサブシステムによって処理され、Neptune サーバーレスの影響を受けません。

Neptune サーバーレス DB クラスターの最小容量値の選択

最小容量に設定できる最小値は 1.0 NCU です。

最小値は、アプリケーションが効率的に動作するために必要な値よりも低く設定しないようにしてください。この値を低く設定しすぎると、メモリ集約的な特定のワークロードでタイムアウト率が高くなる可能性があります。

最小値をできるだけ低く設定すると、需要が少ないときにはクラスターが最小限のリソースしか使用しないため、コストを節約できます。ただし、ワークロードが非常に低いものから非常に高いものへと大きく変動する傾向がある場合は、最小値を高く設定することをお勧めします。最小値を高くすると、Neptune サーバーレスインスタンスのスケールアップが速くなるためです。

これは、Neptune が現在の容量に基づいてスケーリング単位を選択するためです。現在の容量が少ない場合、Neptune は最初はゆっくりとスケールアップします。最小値が高い場合、Neptune はより大きなスケーリングインクリメントから開始するため、ワークロードの急激な増加にもより速くスケールアップできます。

Neptune サーバーレス DB クラスターの最小容量値の選択

最大容量に設定できる最大値は 128.0 NCU であり、最大容量に設定できる最小値は 2.5 NCU です。設定する最大容量値は、設定した最小容量値より大きくなければなりません。

原則として、最大値は、アプリケーションで発生する可能性のあるピーク負荷に対応できる十分な大きさに設定してください。この値を低く設定しすぎると、メモリ集約的な特定のワークロードでタイムアウト率が高くなる可能性があります。

最大値をできるだけ高く設定すると、予想外のワークロードでもアプリケーションが処理できる可能性が高くなるという利点があります。デメリットは、リソースコストを予測して制御する能力をある程度失うことです。需要が予想外に急増すると、予算の予想をはるかに超えるコストがかかる可能性があります。

最大値を注意深く設定することの利点は、ピーク需要に対応できると同時に、Neptune のコンピューティングコストに上限を設けることができることです。

注記

Neptune サーバーレス DB クラスターの容量範囲を変更すると、一部の設定パラメータのデフォルト値が変更されます。Neptune は、一部の新しいデフォルトを直ちに適用できますが、一部の動的パラメータの変更は、再起動後に有効になります。pending-reboot ステータスは、一部のパラメータの変更を適用するために再起動が必要であることを示しています。

既存の設定を使用してサーバーレス要件を見積もる

通常、例外的に高いか低いワークロードを満たすために、プロビジョニングした DB インスタンスの DB インスタンスクラスを変更する場合、その経験を活かして、同等の Neptune サーバーレス容量範囲を概算で見積もることができます。

最適な最小容量設定を見積もる

既存の Neptune DB クラスターについてわかっていることを応用して、最適なサーバーレスの最小容量設定を見積もることができます。

例えば、プロビジョン済みワークロードのメモリ要件が、T3T4g などの小さな DB インスタンスクラスに対して大きすぎる場合、R5 または R6g DB インスタンスに相当するメモリを提供する最小 ACU 設定を選択します。

または、クラスターのワークロードが低い場合、db.r6g.xlarge DB インスタンスクラスを使用するとします。この DB インスタンスクラスには 32 GiB のメモリがあるため、NCU の最小設定を 16 に指定すると、ほぼ同じ容量にスケールダウンできるサーバーレスインスタンスを作成できます (各 NCU は、約 2 GiB のメモリに対応します)。db.r6g.xlarge インスタンスの使用率が低い場合は、より小さい値を指定できる可能性があります。

DB インスタンスが一定量のデータをメモリやバッファキャッシュに保持できるときにアプリケーションが最も効率的に動作する場合は、そのために十分なメモリを提供できる最小の NCU 設定を指定することを検討してください。そうしないと、サーバーレスインスタンスがスケールダウンしたときにバッファーキャッシュからデータが削除され、インスタンスがスケールアップしたときに時間をかけてバッファーキャッシュに読み戻さなければならなくなる可能性があります。データをバッファキャッシュに戻すための I/O 量が大きい場合は、最小 NCU 値を大きくする方が効果的な場合があります。

サーバーレスインスタンスがほとんどの時間特定の容量で実行されていることがわかった場合は、最小容量をそれより少しだけ小さく設定するとよいでしょう。Neptune サーバーレスは、現在の容量が必要容量より極端に小さくない場合、スケールアップする規模と速度を最も効果的に見積もることができます。

プロビジョン済みライターと Neptune サーバーレスリーダーの混合設定では、リーダーはライターと一緒にスケーリングしません。これらは個別にスケーリングするため、最小容量を小さく設定すると、レプリケーションの遅延が大きくなる場合があります。書き込み集約的なワークロードがある場合、ライターが行う変更に対応できるだけの十分な容量がない可能性があります。このような場合は、ライター容量と同等の最小容量を設定してください。特に、プロモーション層 2 ~ 15 のリーダーでレプリカのラグが発生した場合は、クラスターの最小容量設定を増やしてください。

最適な最大容量設定を見積もる

既存の Neptune DB クラスターについてわかっていることを応用して、最適なサーバーレス最大容量設定を見積もることができます。

例えば、クラスターのワークロードが高い場合に db.r6g.4xlarge DB インスタンスクラスを使用するとします。その DB インスタンスクラスには 128 GiB のメモリがあるため、最大 NCU 設定を 64 に指定して、同等の Neptune サーバーレスインスタンスを設定できます (各 NCU は約 2 GiB のメモリに対応)。db.r6g.4xlarge インスタンスが常にワークロードを処理できるとは限らない場合には、DB インスタンスをさらにスケールアップさせるため、より高い値を指定することができます。

ワークロードの予期しない急増がまれな場合は、その急増時でもアプリケーションのパフォーマンスを維持できるよう、最大容量を十分に高く設定するとよいでしょう。一方、異常な急上昇時にスループットを低下させることができるように、最大容量を低く設定したい場合もありますが、これにより Neptune は予想されるワークロードを問題なく処理でき、コストも抑えられます。