observerが配置されているノードでI/O負荷が高くなる原因は多岐にわたります。トラフィックの増加に加えて、通常は移行レプリケーションやコンパクションなどの要因が重なって発生します。対処方法としては、一般的にI/O負荷の高いワークロードをダウングレードすることが考えられます。本記事では、さまざまな状況について詳細に分析します。
緊急時の対応手順
ノードのディスクI/Oが高すぎる場合、一般的にはI/O負荷の高いワークロードをダウングレードすることが考えられます。具体的には以下のようなケースがあります。
実行中のコンパクションを一時停止します。
ディスクI/Oが高すぎるノードでコンパクションが実行されている場合、I/O負荷を軽減するために一時停止することができます。コンパクションを一時停止するコマンドは以下のとおりです:
ALTER SYSTEM SUSPEND MERGE [ZONE [=] 'zone'];I/O負荷が軽減された後、必要に応じてコンパクションを再開できます。構文は以下のとおりです:
ALTER SYSTEM RESUME MERGE [ZONE [=] 'zone'];実行中のバックアップタスクを一時停止します。
OCPを使用して、現在のノードでバックアップが実行されているかどうかを確認できます。もしそうであれば、I/O負荷を軽減するためにバックアップを一時停止できます。
実行中のデータ転送またはインポート/エクスポートタスクを一時停止します。
OCPのTOPSQLやセッション管理機能を使用して、一括書き込み中のSQLを調査できます。バッチ処理タスクがどのシステムから来ているかを迅速に判断できない場合は、OMSを使用して現在のノードでデータ転送タスクが実行されているかどうかを確認し、もしそうであれば必要に応じて一時停止してI/O負荷を軽減した後、再開できます。
詳細についてはデータ移行プロジェクトの管理を参照してください。
また、ODCを使用して現在のノードでデータエクスポートが実行されているかどうかを確認できます。ODCのチケットタブでインポートをクリックしてタスクリストを表示します。インポートタスクが実行待機中の場合、必要に応じてタスクを終了できます。さらに、他のサードパーティのビッグデータプラットフォームやDataXコンポーネントにも定期的に実行されるタスクが存在する可能性があり、必要に応じて手動で停止できます。
ダンプスレッド数を低下させます
ダンプ時の並列度が高すぎると、ディスクのI/Oもそれに伴って増加します。
compaction_high_thread_scoreは並列ダンプスレッド数を制御するパラメータであり、このパラメータ値を低下させることでディスクのI/O利用率を下げることができます。このパラメータのデフォルト値は0で、適応型を意味します。64Cの場合は一般的に10であり、状況に応じて小さくすることができます。このパラメータの変更は再起動なしで即時に反映されます。構文は以下のとおりです:ALTER SYSTEM SET compaction_high_thread_score= 5;変更が成功した後、
SHOW PARAMETERSステートメントを使用して変更が成功したかどうかを確認できます。SHOW PARAMETERS LIKE 'compaction_high_thread_score';バックグラウンドタスクのネットワーク帯域幅を低下させます。
以下のコマンドを使用して、バックグラウンドタスクのネットワーク帯域幅を低下させることができます:
ALTER SYSTEM SET sys_bkgd_net_percentage=30; --デフォルト値は60ロードの高いSQLに対して、実行制限やインデックスの追加を行います。
ディスクI/Oが高すぎる場合、特定のSQLを特定したら、そのSQLの実行計画にhint max_concurrentを追加してSQLの並列処理を制限し、SQLの制限を実現できます。
インデックスの欠如による全テーブルスキャンがI/Oの増加を引き起こしている場合、必要に応じて関連テーブルにインデックスを追加できます。
実行中のインデックス作成をキャンセルします。
現在のクラスタで大規模テーブルのインデックス作成が実行されている場合、必要に応じてキャンセルし、クラスタが回復してから再度作成することができます。