ApsaraDB for MongoDBインスタンスでの1秒あたりの入出力操作 (IOPS) の使用量が重要な指標です。 IOPS使用率 (%) がインスタンスで100% に達するか、または近い場合、インスタンスの応答が遅くなり、使用できなくなることもあります。 このトピックでは、ApsaraDB for MongoDBインスタンスのIOPS使用量 (%) を表示し、高IOPS使用量 (%) をトラブルシューティングする方法について説明します。
背景情報
通常、ホストがI/Oリソースを求めて競合するのを防ぐために、ほとんどのクラウドデータベースプロバイダーは制御グループ (cgroups) などの手法を使用してI/Oリソースを分離し、IOPSを制限します。 インスタンスのIOPSの上限は、インスタンスの仕様によって異なります。
使用上の注意
ApsaraDB for MongoDBコンソールには、スタンドアロンインスタンス、MongoDBインスタンスを実行してクラウドディスクを使用するレプリカセットインスタンス、MongoDB 4.2を実行してクラウドディスクを使用するシャードクラスターインスタンスのIOPS使用率およびIOPS使用率 (%) メトリックを表示できません。
コンソールの [モニタリングデータ] ページには、上記のインスタンスのIOPS使用率とIOPS使用率 (%) のメトリックが0として表示されます。
IOPS使用量の表示 (%)
モニタリングチャートでのIOPS使用率 (%) の表示
ApsaraDB for MongoDB コンソールにログインします。 インスタンスの [基本情報] ページの [仕様情報] セクションで、インスタンスの最大IOPSを確認します。 異なるインスタンス仕様のインスタンスに対するIOPSの上限の詳細については、「インスタンスタイプ」をご参照ください。
ApsaraDB for MongoDB コンソールにログインします。 [モニタリングデータ] ページで、IOPS使用量とIOPS使用量 (%) のメトリックに基づいて最大IOPSを決定します。 ほとんどの場合、ApsaraDB for MongoDBインスタンスのデータファイルとログファイルは同じディスクに保存されます。 データファイルのIOPS使用量は、ログファイルのIOPS使用量と同じです。
I/O問題の一般的な原因
I/Oの問題は、次の一般的な理由によって発生する可能性があります。
メモリが不十分である。 I/Oの問題は、メモリ内のキャッシュサイズに密接に関連しています。 キャッシュサイズを大きくすると、大量のホットキャッシュデータが可能になります。 システムが必要とするディスクI/Oリソースが少ないほど、I/Oボトルネックの可能性は低くなります。 キャッシュサイズを小さくすると、ホットキャッシュデータが少なくなります。 システムは頻繁にダーティページをディスクにフラッシュし、I/Oボトルネックの可能性が高くなります。
ディスクI/Oに関連するパラメーターと構成に問題があります。 たとえば、ジャーナルログとランタイムログが頻繁に更新されたり、WriteConcernパラメーターが不適切に設定されたり、シャードクラスターインスタンスでのmoveChunk操作が無効である場合などです。
ジャーナルファイルの詳細については、「ジャーナリング」をご参照ください。
WriteConcernの詳細については、「Concernの書き込み」をご参照ください。
I/O問題の最適化戦略
ApsaraDB for MongoDBインスタンスの適切な仕様を選択し、一部のアプリケーションシステムのインデックス作成および書き込みポリシーを最適化することを推奨します。
ApsaraDB for MongoDBインスタンスの適切な仕様を設定する
ホットデータサイズとキャッシュサイズの比率を予測することは困難です。 ほとんどの場合、1日あたりの最大CPU使用率とIOPS使用率 (%) はどちらも50% 以内です。
インデックスの最適化
クエリによりテーブル全体がスキャンされたり、不適切なインデックスが使用されたりすると、IOPSの使用率が高くなります (%) 。 たとえば、完全なテーブルデータをエクスポートするために、多数のI/Oリソースが消費されます。 多数のインデックスは大量のデータを生成し、その結果、WiredTigerキャッシュ内のホットデータが減少します。 ビジネスデータの書き込みには、インデックスを更新するために複数のI/O操作が必要であり、I/Oパフォーマンスに影響します。 この場合、適切なインデックスを作成することを推奨します。 詳細は、「インデックス」をご参照ください。
ビジネスアーキテクチャとO&Mの最適化
ディスクI/Oがビジネスアーキテクチャのボトルネックにならないように、次の最適化対策を講じてください。
同時書き込み /読み取りスレッド数の制御
MongoDBはマルチスレッドのアプリケーションです。 高速同時書き込みと複雑なクエリにより、IOPSのボトルネックが発生し、セカンダリノードで継続的なレイテンシが発生する可能性があります。 大量の書き込みデータが原因でI/Oボトルネックが発生している場合は、インスタンスをApsaraDB for MongoDBシャードクラスターインスタンスにアップグレードすることを推奨します。 このように、データはシャードによって水平方向に分割され、インスタンスの書き込みパフォーマンスを線形にスケールアウトします。
オフピーク時にデータを書き込む
定期的な書き込みまたはバッチデータの永続性により、最大IOPSが発生します。 この場合、現在のインスタンス設定がピーク書き込みの要件を満たしていない場合は、ビジネスデータをスムーズに書き込むように設定をアップグレードすることを推奨します。 たとえば、バッチ書き込み操作ごとにランダムなタイムスタンプを追加します。
オフピーク時にO&M操作を実行する
パフォーマンスに大きな影響を与えるO&M操作は、ピークIOPSを引き起こす可能性があります。 オフピーク時にO&M操作を実行することを推奨します。 ピークIOPSは、データの一括書き込み、更新、または削除、インデックスの追加、コレクションに対するコンパクト操作の実行、またはデータの一括エクスポート時に発生する可能性があります。