本文では、さまざまなシナリオにおいて、DTS伝送速度を向上させるための操作ガイドをご紹介します。
伝送性能に影響する要因
1. ソース/ターゲット側のスペック設定:DTS伝送時にはソース/ターゲット側の負荷が増加します。負荷が高い場合、伝送性能が低下する可能性があります。ソース/ターゲット側自体のスペック設定が低いシナリオでは、DTSの伝送速度を適宜低下させることができます。
2. DTSの伝送パラメータ設定:DTSタスク伝送のRPSと同時実行数は柔軟に設定できます。通常、デフォルトパラメータを変更する必要はありません。設定が不適切な場合、性能が制限される可能性があります。
3. ソースからターゲット側へのネットワーク帯域幅、遅延:ソース側とターゲット側の間のネットワークは、接続が安定しており、ネットワーク遅延やパケットロスがない必要があります。
「パブリックネットワーク」アクセス方式を選択した場合、パブリックネットワーク環境では帯域幅が保証されないため、ネットワークが伝送のボトルネックになる可能性があります。「Direct Connect」または「VPNアクセス」を選択して、ネットワーク品質を向上させることをお勧めします。
「CCN」アクセス方式を選択した場合、CCNはすべての地域間で10Kbps以下の無料帯域幅のみを提供します。DTSを使用して正式なビジネスデータを伝送する場合は、より高い帯域幅を選択するために料金を支払う必要があります。
地域間伝送の遅延は同一地域内よりも高くなります。DTSタスクインスタンスの所属地域は、ターゲットインスタンスの地域と一致している必要があります。そうでない場合、遅延が増大します。また、自己構築データベースの場合は、DTS地域を近くに選択して伝送する必要があります。
4. ソース側のデータ問題:ソース側自体のデータ内容がDTS仕様に準拠していない場合(長時間実行されているSQLや主キーなしのテーブルなど)、伝送の進行が停止する可能性があります。このような場合は、ソース側のインデックスとクエリを最適化することをお勧めします。または、ソース側に大きなトランザクション操作や頻繁なDDL操作がある場合、これらは増分段階における短時間の伝送速度低下を引き起こします。
DTSパフォーマンスチューニング手段
1. DTSタスクの伝送パラメータを調整します。
指定したタスクを選択し、操作列で詳細 > 速度制限を選択して調整できます。
全量段階で調整可能なパラメータ:ソースデータベースの全量インポートの同時実行スレッド数とRPS、ターゲットデータベースの全量インポートの同時実行スレッド数とRPS。
増分段階で調整可能なパラメータ:ターゲットデータベースの増分インポートの同時実行スレッド数。
2. DTSタスクスペックを調整します。
指定したタスクを選択し、操作列で詳細 > スペック変更を選択して調整できます。
DTSタスクを購入する際に、異なるスペックを選択すると、増分段階で対応するRPSの上限が異なります。以下はデータ同期タスクを例に説明します。詳細についてはスペック説明を参照してください。増分段階でソースデータベースへの書き込みが過大で、購入したスペックが不足している場合は、DTSタスクスペックをアップグレードする必要があります。 |
micro | 1000 |
small | 2000 |
medium | 5000 |
large | > 5000 |
3. タスクを一時停止してから再開します。
指定したタスクを選択し、操作列で詳細 > 一時停止を選択します。
ソースデータベースに短期的な業務のピークが発生し、ターゲット側の負荷が高くなった場合は、タスクを一時停止し、データのピークが過ぎてから同期を再開できます。
全体方針
性能問題が発生した場合は、まずネットワークと設定要因を調査し、それからDTSレート設定パラメータを変更してください。
DTSの伝送性能は、ソース/ターゲット側の設定、DTSタスクスペック、ネットワーク帯域幅、ネットワーク遅延などと関係があります。そのため、DTSの伝送性能を向上させる際に、同時実行スレッド数だけを増やしたり、RPSだけを増やしたりしても、必ずしも効果があるとは限りません。性能ボトルネックがどの段階にあるかを分析し、具体的な問題に応じて解決する必要があります。
性能チューニング手順
1. 監視情報を確認します。
指定したタスクを選択し、タスクIDをクリックして、タスク詳細ページに移動します。タブを切り替えた後、監視データをクリックして、対応する指標データを確認します。
2. 監視データで遅延が高いと表示された場合は、まずネットワークの問題を調査してください。同一地域の遅延が3msを超えると、遅延が高いと判定されます。クロスリージョンの遅延はさらに若干増加します。
2.1 「パブリックネットワーク」アクセス方式を選択した場合、パブリックネットワーク環境では帯域幅が保証されないため、ネットワークが伝送のボトルネックになる可能性があります。「Direct Connect」または「VPNアクセス」を選択して、ネットワーク品質を向上させることをお勧めします。
2.2 「CCN」アクセス方式を選択した場合、CCNはすべての地域間で10Kbps以下の無料帯域幅のみを提供します。DTSを使用して正式なビジネスデータを伝送する場合は、より高い帯域幅を選択するために料金を支払う必要があります。
2.3 DTSタスクインスタンスの所属地域は、ターゲットインスタンスの地域と一致している必要があります。そうでない場合、遅延が増大します。例えば、ユーザーが広州地域にデータを同期する場合は、広州地域で同期タスクを新規作成する必要があります。
2.4 自己構築データベースの場合は、DTS地域を近くに選択して伝送する必要があります。そうでない場合、遅延が増大します。例えば、自己構築データベースが北京にある場合、自己構築データベースをTencent Cloudの上海地域データベースに同期する必要があります。DTSでリンクを作成する際に、地域として「北京->上海」を選択します。「上海->上海」や「深セン->上海」を選択すると、遅延が増大します。
3. 全量段階では、DTSレートを調整します。
説明:
データ移行タスクがフルエクスポート段階(構造エクスポートのみ、PKなしテーブルのエクスポート)にある場合、データ同期タスクがフルエクスポート段階(構造エクスポートのみ、PKなしテーブルのエクスポート)にある場合、またはPK競合戦略として「競合エラー」を選択している場合、これらのシナリオでレートパラメータを調整すると、タスクが最初から再転送される可能性があります。そのため、以下の3.1および3.2の調整操作を行う前に、十分に評価してください。
3.1 エクスポート速度は正常です:フルエクスポートのBPSが20~50MB/sを上回り、フルエクスポート時にソースインスタンスとのネットワーク遅延が1ms未満です。
このような場合は通常調整は不要です。ユーザーが速度を向上させる必要がある場合は、ソース側の負荷状況を踏まえて分析してください。
ソース側の負荷が高い場合(例えばCPU使用率が90%を超える場合)、速度をさらに上げることはお勧めしません。
ソース側の負荷が低い場合(例えばCPU使用率が50%未満の場合)、ソース側のエクスポートに関する同時実行スレッド数を適宜増やすことができます。フル段階ではデフォルトのRPSが非常に大きいため、伝送速度を向上させる際に通常はRPSを調整する必要はありません。エクスポートの同時実行スレッド数を変更しても効果が顕著でない場合は、手順5に進んでください。
3.2 エクスポート速度が制限されています:フルエクスポートのBPSが20MB/s未満であり、フルエクスポート時にソースインスタンスとのネットワーク遅延が3msを超えています。
ソース側の負荷を踏まえて分析する必要があります。
ソース側の負荷が高い場合(例えばCPU使用率が90%を超える場合)、ソース側自体の設定が低く、DTSの伝送がさらに負荷を増加させ、パフォーマンスが制限されます。ソース側のエクスポートに関する同時実行スレッド数とRPSを適宜下げることをお勧めします。効果が顕著でない場合は、レプリカからの同期を推奨します。
ソース側の負荷が低い場合は、ソース側のエクスポートに関する同時実行スレッド数を適宜増やします。調整しても効果が顕著でない場合は、手順5に進んでください。
3.3 インポート速度は正常です:フルインポートのBPSが20~50MB/sを上回り、フルインポート時にターゲットインスタンスとのネットワーク遅延が1ms未満です。
このような場合は通常調整は不要です。ユーザーが速度を向上させる必要がある場合は、ターゲット側のリソース使用状況を踏まえて分析する必要があります。
ターゲット側の負荷が高い場合(例えばCPU使用率が90%を超える場合)、速度をさらに上げることはお勧めしません。
ターゲット側の負荷が低い場合(例えばCPU使用率が50%未満の場合)、ターゲット側のインポートに関する同時実行スレッド数を適宜増やすことができます。変更しても効果が顕著でない場合は、手順5に進んでください。
3.4 インポート速度が制限されています:フルインポートのBPSが20MB/s未満であり、フルインポート時にターゲットインスタンスとのネットワーク遅延が3msを超えています。
ターゲット側の負荷を踏まえて分析する必要があります。
ターゲット側の負荷が高い場合(例えばCPU使用率が90%を超える場合)、ターゲット側自体の設定が低く、DTSの伝送がさらに負荷を増加させ、パフォーマンスが制限されます。このような場合は、まずターゲット側のインポートに関する同時実行スレッド数とRPSを適宜下げることをお勧めします。
調整しても効果が顕著でない場合は、一時停止機能を使用して、タスクの伝送を一時的に停止できます。タスクの一時停止は3日を超えないことをお勧めします。超えた場合、再開後に伝送を継続できない可能性があります。
ターゲット側の負荷が低い場合は、ターゲット側のインポートに関する同時実行スレッド数を適宜増やすことができます。変更しても効果が顕著でない場合は、手順5に進んでください。
4. 増分段階では、DTSレートを調整します。
4.1 監視を通じて、増分タスクのRPS(ソースインスタンスの増分エクスポートRPS、ターゲットインスタンスの増分インポートRPS)がスペックの上限に達しているかどうかを確認します。異なるスペックのタスクを購入した場合、対応するRPSの上限は異なります。
増分RPSがすでに上限に達している場合は、まずDTSタスクスペックをアップグレードします(設定変更操作によって実現します)。
増分RPSがタスクスペック上限の60%未満の場合、パフォーマンスが制限されている可能性があります。手順4.2に進んでください。
4.2 ターゲット側の負荷を確認します。
ターゲット側の負荷が限界に達している場合(例えばCPU使用率が95%を超える場合)、手順4.3に進んでください。
ターゲット側の負荷が比較的正常な場合(例えばCPU使用率が60~85%の場合)、通常は調整の必要はありません。
ターゲット側の負荷が低い場合(例えばCPU使用率が50%未満の場合)、DTSレートパラメータを適宜増やすことができます。
ターゲット側がデータベースタイプの場合、ターゲット側の書き込みに関する同時実行スレッド数を適宜増やすことができます。調整しても効果が顕著でない場合は、手順5に進んでください。
ターゲット側がKafkaの場合、ターゲット側の書き込みに関する同時実行スレッド数を増やしても効果が顕著でない可能性があります。まずターゲット側CKafkaの帯域幅設定とパーティション数を増やしてください(複数のパーティションに並行して書き込むことで、ターゲット側への書き込み速度を向上させます)。
4.3 ソース側に大きなトランザクション操作や頻繁なDDL操作があるかどうかを確認します。
4.3.1 ソース側に大きなトランザクションや頻繁なDDL操作があります。
これはターゲット側に一時的な負荷を生じさせるため、タスクを一時停止し、大きなトランザクション/DDLの同期が終了してからタスクを再開できます。ただし、一時停止の時間は3日を超えないようにしてください。超えるとタスクが失敗する可能性があります。
4.3.2 ソース側に大きなトランザクションや頻繁なDDL操作はありません。
このような場合、ターゲット側自体の設定が低く、DTSの伝送がさらに負荷を増加させるため、パフォーマンスが制限されます。まずターゲット側のインポートに関する同時実行スレッド数を下げることをお勧めします。
ターゲット側がデータベースタイプの場合、ターゲット側の書き込みに関する同時実行スレッド数を適宜下げることができます。調整しても効果がない場合は、タスクに対してスペックダウンを行ってください。
ターゲット側がKafkaの場合、まずターゲット側CKafkaの帯域幅設定とパーティション数を適宜増やしてください(複数のパーティションに並行して書き込むことで、ターゲット側への書き込み速度を向上させます)。その後、ターゲット側の書き込みに関する同時実行スレッド数を下げてください。調整しても効果がない場合は、タスクに対してスペックダウンを行ってください。
5.1 ソース側で長時間実行されているSQLがあるかどうかを確認します。
ソース側で遅いSQLが実行されている場合、同期速度が低下します。ソース側に遅いSQLがあるかどうかをチェックし、ある場合は遅いSQLを処理し、インデックスの最適化を推奨して、遅いSQLの実行を回避してください。
5.2 ソース側にDTS仕様に適合しないデータがあるかどうかを確認します。
ソース側に主キーなしのテーブルが存在する場合、これらのテーブルに対する大規模なクエリによって同期の進捗が遅くなる可能性があります。ソース側のテーブルに主キーを追加するか、主キーなしのテーブルを同期しないことをお勧めします。