翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon DocumentDB サーバーレススケーリング設定
トピック
DocumentDB サーバーレスクラスターのスケーリング容量範囲の選択
Amazon DocumentDB クラスターに Amazon DocumentDBサーバーレスインスタンスを追加する前に、クラスターに ServerlessV2ScalingConfiguration
パラメータも設定する必要があります。
ServerlessV2ScalingConfiguration
パラメータは、クラスター内の任意のサーバーレスインスタンスのサーバーレススケーリング容量範囲を定義する 2 つの値で構成されます。
MinCapacity
— クラスター内の DocumentDB サーバーレスインスタンスの最小スケーリング容量。MaxCapacity
— クラスター内の DocumentDB サーバーレスインスタンスの最大スケーリング容量。
DocumentDB サーバーレスクラスターMinCapacity
の設定の選択
には常に 0.5 を選択したいと考えていますMinCapacity
。この値により、インスタンスは完全にアイドル状態でアクティブのまま最小容量にスケールダウンできます。ただし、そのクラスターの使用方法やその他の設定によっては、最も効果的な最小容量が異なる場合もあります。最小容量設定を選択する場合は、以下の要素を考慮してください。
DocumentDB サーバーレスインスタンスのスケーリングレートは、現在の容量によって異なります。現在の容量が大きいほど、スケールアップが速くなります。インスタンスが非常に大容量にすばやくスケールアップする必要がある場合は、最小容量をスケーリングレートが要件を満たす値に設定することを検討してください。
通常、特に高ワークロードまたは低ワークロードを想定してインスタンスのインスタンスクラスを変更する場合は、そのエクスペリエンスを使用して、同等の DocumentDB サーバーレス容量範囲を概算で見積もることができます。プロビジョニングされた Amazon DocumentDB インスタンスタイプのメモリサイズを確認するには、「」を参照してくださいインスタンス制限。
たとえば、クラスターのワークロードが低い場合に
db.r6g.xlarge
インスタンスクラスを使用するとします。そのインスタンスクラスには 32 GiB のメモリがあります。したがって、16MinCapacity
の を指定して、ほぼ同じ容量にスケールダウンできるサーバーレスインスタンスを設定できます。これは、各 DCU が約 2 GiB のメモリに対応するためです。インスタンスの使用率が低い場合に備えて、db.r6g.xlarge
インスタンスをさらにスケールダウンできるように、ある程度低い値を指定できます。インスタンスのバッファキャッシュに一定量のデータがある場合にアプリケーションが最も効率的に機能する場合は、頻繁にアクセスされるデータを保持するのに十分なメモリ容量の最小 DCU 設定を指定することを検討してください。それ以外の場合、サーバーレスインスタンスがより低いメモリサイズにスケールダウンすると、一部のデータがバッファキャッシュから削除されます。次に、インスタンスがスケールアップすると、情報は時間の経過とともにバッファキャッシュに読み戻されます。データをバッファキャッシュに戻すための I/O の量が多い場合は、より高い最小 DCU 値を選択する方が効果的である可能性があります。詳細については、「インスタンスのサイズ指定」を参照してください。
DocumentDB サーバーレスインスタンスがほとんどの場合特定の容量で実行される場合は、そのベースラインよりも小さい最小容量設定を指定することを検討してください。サーバーレスインスタンスは、現在の容量が必要な容量よりも大幅に低い場合のスケールアップの量と速度を最も効果的に見積もることができます。
プロビジョニングされたワークロードのメモリ要件が T3 や T4g などの小さなインスタンスクラスで高すぎる場合は、R5 または R6g インスタンスと同等のメモリを提供する最小 DCU 設定を選択します。
特に、指定された機能で使用する
MinCapacity
には、以下の最小値をお勧めします (これらの推奨事項は変更される可能性があります)。Performance Insights — 2 DCUs
Amazon DocumentDB では、レプリケーションはストレージレイヤーで発生するため、リーダーの容量はレプリケーションに直接影響しません。ただし、個別にスケールする DocumentDB サーバーレスリーダーインスタンスの場合は、クエリのレイテンシーを回避するために、書き込み負荷の高い期間にワークロードを処理するのに十分な最小容量があることを確認してください。昇格階層 2~15 のリーダーインスタンスでパフォーマンスの問題が発生した場合は、クラスターの最小容量を増やすことを検討してください。リーダーインスタンスをライターと一緒にスケールするか個別にスケールするかの変更の詳細については、「」を参照してくださいサーバーレスリーダーの昇格階層の表示と変更。
DocumentDB サーバーレスリーダーインスタンスを持つクラスターがある場合、リーダーの昇格階層が 0 または 1 でない場合、リーダーはライターインスタンスに合わせてスケーリングされません。この場合、最小容量を小さく設定すると、レプリケーションの遅延が大きくなる場合があります。これは、データベースがビジー状態のときに、ライターからの変更を適用するのに十分な容量がリーダーにない可能性があるためです。最小容量は、ライターインスタンスと同等の量のメモリと CPU を表す値に設定することをお勧めします。
DocumentDB サーバーレスインスタンスが最小容量から最大容量にスケールするのにかかる時間は、最小 DCU 値と最大 DCU 値の差によって異なります。インスタンスの現在の容量が大きい場合、DocumentDB サーバーレスは、インスタンスが小さな容量から起動する場合よりも大きくスケールアップします。したがって、比較的大きな最大容量を指定し、インスタンスがその容量の近くでほとんどの時間を費やす場合は、最小 DCU 設定を増やすことを検討してください。これにより、アイドル状態のインスタンスは最大容量までより迅速にスケールアップできます。
特定のインスタンス制限は、接続制限、カーソル制限、オープントランザクション制限など、サーバーレスインスタンスの現在の容量によって決まります。インスタンスの現在の容量が小さい場合、それに応じて制限も小さくなります。サーバーレスインスタンスをその
MinCapacity
値にスケールダウンするときにこれらの制限に問題がある場合は、 をより高い値MinCapacity
に増やすことを検討してください。詳細については、「Amazon DocumentDB サーバーレスインスタンスの制限」を参照してください。さらに、アクティブな接続制限、カーソル制限、オープントランザクション制限など、
MinCapacity
が 1.0 DCUs以下に設定されている場合、特定のインスタンス制限はより低い最大値に制限されます。これらの制限がワークロードに対して不十分な場合は、少なくとも 1.5 DCUsMinCapacity
の値を使用してください。詳細については、「Amazon DocumentDB サーバーレスインスタンスの制限」を参照してください。
クラスターのスケーリング設定を変更する方法については、「」を参照してくださいAmazon DocumentDB サーバーレスの管理。
DocumentDB サーバーレスクラスターMaxCapacity
の設定の選択
DocumentDB サーバーレスの最大容量設定には、常に高い値を選択したいと考えています。最大容量が大きいと、インスタンスは負荷の高いワークロードを実行しているときに最もスケールアップできます。値を小さくすると、予期せぬ料金が発生する可能性を回避できます。そのクラスターの使用方法およびその他の設定によっては、最も効果的な値が当初検討していたより大きくなったり、小さくなったりすることがあります。最大容量設定を選択する場合は、以下の要素を考慮してください。
最大容量は、最小容量より大きくなければなりません。最小容量と最大容量を同一に設定することができます。ただし、その場合は容量がスケールアップまたはスケールダウンすることはありません。したがって、テスト以外では、最小容量と最大容量に同じ値を使用することは適切ではありません。
最大容量は 1.0 DCUs 以上、最大 256 DCUsである必要があります。
サーバーレスインスタンスのスケーリングとリソース使用量をモニタリングすることをお勧めします。サーバーレスインスタンスが最大容量に頻繁にスケーリングされ、リソースの制約 (
DCUUtilization
メトリクスが 100.0 の場合など) にヒットする場合は、より高いMaxCapacity
値を選択することをお勧めします。詳細については、「Amazon DocumentDB サーバーレスのモニタリング」を参照してください。通常、特に高ワークロードまたは低ワークロードを想定してプロビジョニングされたインスタンスのインスタンスクラスを変更する場合は、そのエクスペリエンスを使用して同等の DocumentDB サーバーレス容量範囲を見積もることができます。プロビジョニングされた Amazon DocumentDB インスタンスのメモリサイズを確認するには、「」を参照してくださいインスタンス制限。
たとえば、クラスターのワークロードが高い場合に
db.r6g.4xlarge
インスタンスクラスを使用するとします。そのインスタンスクラスには 128 GiB のメモリがあります。したがって、最大 DCU 設定を 64 に指定して、ほぼ同じ容量にスケールアップできるサーバーレスインスタンスを設定できます。これは、各 DCU が約 2 GiB のメモリに対応するためです。インスタンスにワークロードを効果的に処理するのに十分な容量がない場合に備えて、db.r6g.4xlarge
インスタンスをさらにスケールアップできるように、ある程度高い値を指定できます。データベース使用量に予算の上限がある場合は、すべてのサーバーレスインスタンスが常に最大容量で実行されていても、その上限内に留まる値を選択します。クラスターにサーバーレスインスタンスが n つある場合、クラスターがいつでも消費できる理論上の最大サーバーレス容量は、クラスターの最大 DCU 設定の n 倍であることに注意してください。(例えば、一部のリーダーがライターから独立してスケーリングする場合など、実際の消費量は少なくなる場合があります)。
サーバーレスリーダーインスタンスを使用してライターインスタンスから読み取り専用ワークロードの一部をオフロードする場合、より低い最大容量設定を選択できる場合があります。これは、各リーダーインスタンスがクラスターに 1 つのインスタンスしか含まれていないかのようにスケールする必要がないことを反映させるために行います。
データベースパラメータの設定間違いやアプリケーション内の非効率的なクエリによる過度の使用から保護したいとします。その場合、設定可能な理論的な最大値よりも最大容量設定を小さく選択することで、誤って過剰に使用することを回避できます。
実際のユーザーアクティビティによるスパイクがまれしか発生しない場合は、最大容量設定を選択する際にその機会を考慮できます。アプリケーションが完全なパフォーマンスとスケーラビリティで動作し続けることを優先する場合は、通常の使用状況よりも大きい最大容量設定を指定できます。アクティビティの非常に極端なスパイク中、アプリケーションのスループットが低下しても問題ない場合は、最大容量を少し小さめに設定できます。アプリケーションの実行を維持するのに十分なメモリと CPU リソースがある設定を選択してください。
各インスタンスのメモリ使用量を増やすクラスターの設定をオンにする場合は、最大 DCU 値を決定するときにそのメモリを考慮してください。このような設定には、Performance Insights の設定が含まれます。最大 DCU 値により、サーバーレスインスタンスが、それらの機能の使用時にワークロードを処理するのに十分なスケールアップが許可されていることを確認します。最大 DCU 設定の低さと、メモリオーバーヘッドを課す Amazon DocumentDB 機能の組み合わせによって発生する問題のトラブルシューティングについては、メモリ不足エラーを回避する「(以下)」を参照してください。
特に、指定された機能で使用する
MaxCapacity
には、以下の最小値をお勧めします (これらの推奨事項は変更される可能性があります)。データボリュームが大きいクラスターでのサーバーレスインスタンスの作成 – 2 DCUs (クラスター復元の一部としてのサーバーレスインスタンスの作成が含まれます)。
特定のインスタンス制限は、接続制限、カーソル制限、オープントランザクション制限など、インスタンスの現在の容量によって決まります。ワークロード
MaxCapacity
の値を選択するときは、これらの制限のいずれかによってボトルネックにならないように、これらのインスタンスの制限を念頭に置いてください。詳細については、「Amazon DocumentDB サーバーレスインスタンスの制限」を参照してください。
クラスターのスケーリング設定を変更する方法については、「」を参照してくださいAmazon DocumentDB サーバーレスの管理。
メモリ不足エラーを回避する
DocumentDB サーバーレスインスタンスの 1 つが一貫して最大容量の制限に達すると、Amazon DocumentDB はインスタンスを互換性のないパラメータのステータスに設定することで、この条件を示します。インスタンスのステータスが incompatible-parameters の場合、一部のオペレーションはブロックされます。例えば、エンジンバージョンをアップグレードすることはできません。Amazon DocumentDB インスタンスのステータスの詳細については、Amazon DocumentDB インスタンスのステータスのモニタリング」を参照してください。
通常、インスタンスはout-of-memoryエラーにより頻繁に再起動すると、このステータスになります。Amazon DocumentDB は、このタイプの再起動が発生したときにイベントを記録します。リソースイベントを表示するには、「」を参照してくださいAmazon DocumentDB イベントの表示。Performance Insights などの設定をオンにするとオーバーヘッドが発生するため、メモリ使用率が異常に高くなる可能性があります。また、インスタンスの負荷の高いワークロードや、多数のスキーマオブジェクトに関連付けられたメタデータの管理によっても発生する可能性があります。
インスタンスが最大容量に頻繁に達しないようにメモリ負荷が低くなると、Amazon DocumentDB は自動的にインスタンスのステータスを使用可能な状態に戻します。
この状態から回復させるには、以下アクションの一部またはすべてを実行できます。
クラスターの DocumentDB 容量単位 (DCU) の最小値を変更して、サーバーレスインスタンスの容量の下限を増やします。これを行うことで、アイドル状態のデータベースが、クラスターでオンになっている機能に必要なメモリよりも少ない容量にスケールダウンする問題を回避できます。クラスターの DCU 設定を変更したら、サーバーレスインスタンスを再起動します。これにより、Amazon DocumentDB がステータスを使用可能な状態にリセットできるかどうかが評価されます。
クラスターの最大 DCU 値を変更して、サーバーレスインスタンスの容量の上限を増やします。そうすることで、クラスターでオンになっている機能やデータベースワークロードに、ビジー状態のデータベースが十分なメモリがある容量にスケールアップできない問題を回避できます。クラスターの DCU 設定を変更したら、サーバーレスインスタンスを再起動します。これにより、Amazon DocumentDB がステータスを使用可能な状態にリセットできるかどうかが評価されます。
メモリオーバーヘッドが必要な設定をオフにします。たとえば、Performance Insights などの機能がオンになっているが、使用していないとします。その場合は、オフにすることができます。または、クラスターの最小容量値と最大容量値を調整して、これらのタイプの機能で使用されるメモリを考慮することもできます。最小および最大容量設定の選択に関するガイドラインについては、「DocumentDB サーバーレスクラスターのスケーリング容量範囲の選択」を参照してください。
インスタンスのワークロードを減らします。たとえば、リーダーインスタンスをクラスターに追加して、読み取り専用クエリからの負荷をより多くのインスタンスに分散できます。
サーバーレスインスタンスがスケールダウンしないのはなぜですか?
場合によっては、データベースに負荷がかからなくても、DocumentDB サーバーレスは最小容量までスケールダウンしません。これは、次のような理由で発生します。
Performance Insights はリソース使用量を増やし、データベースが最小容量にスケールダウンするのを防ぐことができます。主な機能は以下のとおりです。
リーダーインスタンスが最小にスケールダウンせず、ライターインスタンスと同じかそれ以上の容量に留まる場合は、リーダーインスタンスの優先度層を確認します。階層 0 または 1 の DocumentDB サーバーレスリーダーインスタンスは、少なくともライターインスタンスと同じ最小容量に保持されます。リーダーの優先度の階層を 2 以上に変更して、ライターとは無関係にスケールアップおよびスケールダウンされるようにします。詳細については、「Amazon DocumentDB サーバーレススケーリング」を参照してください。
データベースワークロードが重いと、リソースの使用量が増える可能性があります。
データベースのボリュームが大きいと、リソースの使用量が増える可能性があります。Amazon DocumentDB は、クラスター管理にメモリと CPU リソースを使用します。Amazon DocumentDB では、データベースボリュームが大きいクラスターを管理するために、より多くの CPU とメモリが必要です。クラスターの最小容量がクラスター管理に必要な最小容量よりも少ない場合、クラスターは最小容量までスケールダウンされません。
バックグラウンドメンテナンスアクティビティでは、リソースの使用量を定期的に増やすことができます。
それでもデータベースが設定された最小容量までスケールダウンしない場合は、データベースを停止して再起動し、時間の経過とともに蓄積した可能性があるメモリフラグメントを再利用します。データベースを停止して起動するとダウンタイムが発生するため、これを実行するかどうかは慎重に判断することをお勧めします。