Topik ini menjelaskan faktor-faktor yang memengaruhi kecepatan sinkronisasi data, cara menyesuaikan konkurensi untuk memaksimalkan kecepatan sinkronisasi, opsi pengendalian aliran pekerjaan, serta solusi untuk skenario sinkronisasi data yang lambat.
Ikhtisar
Kecepatan sinkronisasi data dipengaruhi oleh berbagai faktor, seperti konfigurasi tugas, kinerja database, dan kondisi jaringan. Untuk informasi selengkapnya, lihat Faktor yang memengaruhi kecepatan sinkronisasi data.
Sinkronisasi data yang lambat dapat terjadi pada berbagai tahap proses. Topik ini menjelaskan solusi untuk kinerja lambat pada setiap tahap tersebut. Untuk informasi selengkapnya, lihat Skenario dan solusi untuk sinkronisasi data yang lambat.
Jika kinerja database terbatas, kecepatan sinkronisasi yang lebih tinggi belum tentu lebih baik. Kecepatan tinggi dapat memberikan tekanan berlebihan pada database dan memengaruhi layanan produksi lainnya. Data Integration menyediakan opsi pengendalian aliran yang dapat Anda konfigurasi sesuai kebutuhan. Untuk informasi selengkapnya, lihat Membatasi kecepatan sinkronisasi.
Faktor yang memengaruhi kecepatan sinkronisasi data
Kecepatan sinkronisasi data dipengaruhi oleh faktor-faktor seperti lingkungan database sumber dan tujuan serta konfigurasi tugas. Anda bertanggung jawab utama untuk memantau dan menyetel kinerja, beban, serta kondisi jaringan database sumber dan tujuan.
Faktor-faktor berikut memengaruhi kecepatan sinkronisasi data:
Faktor | Deskripsi |
Sumber data |
|
Kelompok sumber daya penjadwalan yang digunakan oleh tugas sinkronisasi offline | Tugas sinkronisasi offline didistribusikan oleh sumber daya penjadwalan untuk dijalankan pada sumber daya eksekusi Data Integration. Penggunaan sumber daya penjadwalan juga memengaruhi efisiensi sinkronisasi secara keseluruhan. |
Konfigurasi tugas sinkronisasi offline |
|
Sumber data tujuan |
|
Skenario dan solusi untuk sinkronisasi data yang lambat
Untuk informasi selengkapnya tentang log tugas sinkronisasi offline, lihat Menganalisis log sinkronisasi offline.
Skenario sinkronisasi data yang lambat | Fenomena | Penyebab yang Mungkin | Solusi |
Menunggu sumber daya penjadwalan |
| Tugas offline didistribusikan oleh kelompok sumber daya penjadwalan ke mesin untuk dieksekusi. Jika jumlah tugas yang berjalan pada kelompok sumber daya penjadwalan mencapai batas atasnya, tugas baru harus menunggu hingga tugas yang sedang berjalan selesai dan melepaskan sumber daya. | Di halaman Operation Center, Anda dapat melihat tugas mana yang sedang menggunakan sumber daya saat tugas saat ini sedang menunggu. Catatan Jika Anda menggunakan kelompok sumber daya bersama untuk penjadwalan, migrasikan tugas ke kelompok sumber daya eksklusif atau Serverless untuk eksekusi. |
Menunggu sumber daya eksekusi | Log tugas sinkronisasi menunjukkan `wait`. | Sisa sumber daya dalam kelompok sumber daya Data Integration tidak cukup untuk menjalankan tugas saat ini. Sebagai contoh, kelompok sumber daya mendukung maksimal delapan thread konkuren. Tiga tugas dikonfigurasi, masing-masing memerlukan tiga thread konkuren. Jika dua tugas berjalan secara bersamaan, mereka menggunakan enam thread. Kelompok sumber daya hanya memiliki dua thread tersisa. Tugas ketiga, yang memerlukan tiga thread, harus menunggu karena sumber daya tidak mencukupi. Log untuk tugas ini menunjukkan `wait`. | Periksa apakah tugas lain sedang berjalan dan menggunakan banyak sumber daya dalam kelompok sumber daya tersebut. Anda dapat menggunakan solusi berikut untuk mengatasi masalah ini: Catatan
|
Tugas sinkronisasi berjalan terlalu lambat | Log tugas sinkronisasi menunjukkan run, tetapi kecepatannya 0. Tugas sedang berjalan. Jika kondisi ini berlangsung lama, klik Detail log untuk melihat detail eksekusi. |
Catatan Kecepatan sinkronisasi data tidak dapat dijamin melalui Internet. |
|
Log tugas sinkronisasi menunjukkan run, tetapi kecepatannya 0. Tugas sedang berjalan. Jika kondisi ini berlangsung lama, klik Detail log untuk melihat detail eksekusi. |
Catatan Kecepatan sinkronisasi data tidak dapat dijamin melalui Internet. | ||
Log menunjukkan run dan kecepatan bukan nol, tetapi proses sinkronisasi lambat. |
Catatan Kecepatan sinkronisasi data tidak dapat dijamin melalui Internet. |
|
Batasi kecepatan sinkronisasi
Secara default, tugas sinkronisasi Data Integration tidak dikendalikan alirannya. Tugas berjalan dengan kecepatan tertinggi yang mungkin dalam batas konkurensi yang dikonfigurasi. Namun, kecepatan tinggi dapat memberikan tekanan berlebihan pada database dan memengaruhi layanan produksi lainnya. Data Integration menyediakan opsi pengendalian aliran yang dapat Anda konfigurasi sesuai kebutuhan. Setelah Anda mengaktifkan pengendalian aliran, kami menyarankan agar Anda mengatur kecepatan maksimum tidak lebih dari 30 MB/detik. Kode berikut menunjukkan cara mengonfigurasi pengendalian aliran di editor kode untuk menetapkan batas bandwidth 1 MB/detik.
"setting": {
"speed": {
"throttle": true // Mengaktifkan pengendalian aliran.
"mbps": 1, // Laju spesifik.
}
}Parameter throttle dapat diatur ke true atau false:
Saat throttle diatur ke true, pengendalian aliran diaktifkan. Anda harus menetapkan nilai data spesifik untuk mbps. Jika Anda tidak menetapkan mbps, program akan mengalami error atau laju menjadi abnormal.
Saat throttle diatur ke false, pengendalian aliran dinonaktifkan, dan konfigurasi mbps diabaikan.
Ukuran lalu lintas adalah metrik Data Integration dan tidak mewakili lalu lintas kartu antarmuka jaringan (NIC) yang sebenarnya. Biasanya, lalu lintas NIC adalah satu hingga dua kali lipat lalu lintas saluran. Overhead lalu lintas aktual bergantung pada serialisasi data sistem penyimpanan data.
File semi-terstruktur tunggal tidak memiliki kunci shard. Untuk beberapa file, Anda dapat menetapkan batas kecepatan pekerjaan. Namun, batas kecepatan efektif juga terkait dengan jumlah file.
Sebagai contoh, untuk n file, batas kecepatan efektif adalah n MB/detik:
Jika Anda menetapkan batas kecepatan ke n+1 MB/detik, data disinkronkan pada kecepatan n MB/detik.
Jika Anda menetapkan batas kecepatan ke n-1 MB/detik, data disinkronkan pada kecepatan n-1 MB/detik.
Untuk database relasional, Anda harus mengonfigurasi kunci shard agar batas kecepatan efektif di beberapa thread. Database relasional biasanya hanya mendukung kunci shard numerik. Namun, database Oracle mendukung kunci shard numerik dan string.
FAQ
Parameter `BatchSize` atau `maxfilesize` mengontrol jumlah catatan dalam pengiriman batch. Nilai yang sesuai dapat mengurangi interaksi jaringan antara Data Integration dan database serta meningkatkan throughput. Namun, jika nilai ini terlalu besar, error kehabisan memori (OOM) dapat terjadi dalam proses sinkronisasi. Jika error ini terjadi, lihat FAQ untuk sinkronisasi offline.
Lampiran: Periksa paralelisme aktual
Di halaman detail log tugas sinkronisasi data, temukan entri log dalam format JobContainer - Job set Channel-Number to 2 channels.. Nilai channels adalah tingkat paralelisme aktual untuk tugas tersebut.
Lampiran: Hubungan antara paralelisme dan penggunaan sumber daya
Dalam kelompok sumber daya eksklusif, penggunaan sumber daya ditentukan oleh hubungan antara konkurensi dan CPU, serta antara konkurensi dan memori:
Hubungan antara konkurensi dan CPU
Dalam kelompok sumber daya eksklusif, rasio vCPU terhadap konkurensi adalah 1:2. Sebagai contoh, mesin ECS dengan 4 vCPU dan memori 8 GiB menyediakan kuota konkurensi 8 untuk kelompok sumber daya eksklusifnya. Kelompok ini dapat menjalankan maksimal delapan tugas sinkronisasi offline dengan konkurensi 1, atau empat tugas sinkronisasi offline dengan konkurensi 2.
Jika konkurensi yang diperlukan oleh tugas baru yang dikirim ke kelompok sumber daya eksklusif lebih besar daripada sisa kuota konkurensi kelompok tersebut, tugas baru harus menunggu. Tugas tersebut akan berjalan setelah tugas yang sedang berjalan di kelompok selesai dan sisa kuota konkurensi mencukupi untuk tugas baru tersebut.
CatatanJika konkurensi yang diatur untuk tugas baru melebihi kuota konkurensi maksimum kelompok sumber daya eksklusif, tugas tersebut akan terjebak secara permanen dalam status menunggu. Misalnya, hal ini terjadi jika Anda mengirim tugas dengan konkurensi 10 ke kelompok sumber daya eksklusif pada mesin ECS dengan 4 vCPU dan memori 8 GiB. Karena kelompok sumber daya mengalokasikan sumber daya berdasarkan urutan pengiriman, tugas berikutnya juga akan diblokir.
Hubungan antara konkurensi dan memori
Dalam kelompok sumber daya eksklusif, memori yang ditempati oleh satu tugas dihitung sebagai Min{768 + (Konkurensi - 1) × 256, 8029} MB. Namun, Anda dapat mengganti perhitungan ini dalam pengaturan tugas. Di editor kode, atur jalur JSON $.setting.jvmOption.

Pastikan total memori yang digunakan oleh semua tugas yang berjalan setidaknya 1 GB lebih kecil dari total memori semua mesin dalam kelompok sumber daya eksklusif. Hal ini memungkinkan tugas berjalan lancar. Jika kondisi ini tidak terpenuhi, mekanisme Linux OOM Killer dapat memaksa menghentikan tugas.
CatatanJika Anda tidak menggunakan editor kode untuk meningkatkan memori tugas, Anda hanya perlu mempertimbangkan batas kuota konkurensi kelompok sumber daya eksklusif saat mengirim tugas.
Lampiran: Kecepatan Sinkronisasi
Kecepatan baca dan tulis sangat bervariasi di antara sumber data yang berbeda. Bagian berikut menjelaskan kecepatan sinkronisasi single-thread rata-rata untuk sumber data khas dalam kelompok sumber daya eksklusif:
Kecepatan single-thread rata-rata untuk plugin Writer yang berbeda
Writer
Kecepatan single-thread rata-rata (KB/detik)
AnalyticDB for PostgreSQL
147,8
AnalyticDB for MySQL
181,3
ClickHouse
5.259,3
DataHub
45,8
DRDS
93,1
Elasticsearch
74,0
FTP
565,6
GDB
17,1
HBase
2.395,0
hbase20xsql
37,8
HDFS
1.301,3
Hive
1.960,4
HybridDB for MySQL
323,0
HybridDB for PostgreSQL
116,0
Kafka
0,9
LogHub
788,5
MongoDB
51,6
MySQL
54,9
ODPS
660,6
Oracle
66,7
OSS
3.718,4
OTS
138,5
PolarDB
45,6
PostgreSQL
168,4
Redis
7.846,7
SQLServer
8,3
Stream
116,1
TSDB
2,3
Vertica
272,0
Kecepatan single-thread rata-rata untuk plugin Reader yang berbeda
Reader
Kecepatan single-thread rata-rata (KB/detik)
AnalyticDB for PostgreSQL
220,3
AnalyticDB for MySQL
248,6
DRDS
146,4
Elasticsearch
215,8
FTP
279,4
HBase
1.605,6
hbase20xsql
465,3
HDFS
2.202,9
Hologres
741,0
HybridDB for MySQL
111,3
HybridDB for PostgreSQL
496,9
Kafka
3.117,2
LogHub
1.014,1
MongoDB
361,3
MySQL
459,5
ODPS
207,2
Oracle
133,5
OSS
665,3
OTS
229,3
OTSStream
661,7
PolarDB
238,2
PostgreSQL
165,6
RDBMS
845,6
SQLServer
143,7
Stream
85,0
Vertica
454,3


Jika Detail log menunjukkan nilai besar untuk parameter 

