DocumentDB インスタンスの CPU 使用率が高い場合のトラブルシューティングと解決方法を教えてください。

最終更新日: 2020 年 6 月 17 日

Amazon DocumentDB (MongoDB 互換) インスタンスで CPU 使用率が高まっています。高い CPU 使用率を解決するにはどうすればよいですか?

簡単な説明

Amazon DocumentDB インスタンスの CPU 使用率は、次の理由で増加する可能性があります。

  • ユーザーが開始するワークロードの負荷が高い
  • クエリが非効率的
  • クラスター内の負荷を分散する代わりに、クラスター内のライターまたは特定の DB インスタンスに過剰な負荷をかける。

CPU パフォーマンスの問題をトラブルシューティングするには、次のリソースを使用します。

解決方法

replicaSet を使用したワークロードの分割

複数の DB インスタンスがある DocumentDB クラスターがある場合は、ライター CPU が高く、リーダーがアイドル状態になっているかどうかを確認します。これは、ライターが過負荷であることを意味します。

これを解決するには、replicaSet を使用してワークロードを分割するか、複数の接続プールを使用して読み取りクエリをリーダー DB インスタンスにルーティングします。

接続用の readPreference を指定する

レプリカセットとして接続するときは、接続用の readPreference を指定できます。読み込み設定として secondaryPreferred を指定すると、クライアントは読み取りクエリをレプリカにルーティングし、書き込みクエリをプライマリ DB インスタンスにルーティングします。次の例は、Python の接続文字列を示しています。

## Create a MongoDB client, open a connection to Amazon DocumentDB as a
##   replica set and specify the read preference as secondary preferred

注意: リードレプリカからの読み込みには結果整合性があります。

クラスターに 1 つ以上のリーダーインスタンスを追加する

単一の DB インスタンスを持つ DocumentDB クラスターがある場合 (ライターのみ)、クラスターに 1 つ以上のリーダー DB インスタンスを追加します。次に、readPreference=secondaryPreferred を使用して負荷を効率的に処理します。

Profiler を使用して低速クエリを識別する

負荷がすべてのレプリカに均等に分散されている場合は、プロファイラーを使用して、時間の経過によって遅くなるクエリを特定します。

DB インスタンスのインスタンスクラスをスケールアップする

DocumentDB クラスター内の DB インスタンスのインスタンスクラスをスケールアップして、ワークロードを処理することもできます。

注意: インスタンスクラスをスケールアップすると、コストが増加します。 詳細については、DocumentDB の料金表を参照してください。


この記事はお役に立ちましたか?

改善できることはありますか?


さらにサポートが必要な場合