Google Cloud Search SDK berisi beberapa parameter konfigurasi yang disediakan Google yang digunakan oleh semua konektor. Mengetahui cara menyesuaikan pengaturan ini dapat sangat menyederhanakan pengindeksan data. Panduan ini mencantumkan beberapa masalah yang dapat muncul selama pengindeksan dan setelan yang digunakan untuk menyelesaikannya.
Throughput pengindeksan untuk FullTraversalConnector
Tabel berikut mencantumkan setelan konfigurasi untuk meningkatkan throughput untuk FullTraversalConnector:
Setelan | Deskripsi | Default | Perubahan konfigurasi untuk dicoba |
---|---|---|---|
traverse.partitionSize |
Jumlah ApiOperation() yang akan diproses dalam batch sebelum mengambil APIOperation() tambahan. SDK menunggu partisi saat ini diproses sebelum mengambil item tambahan. Setelan ini bergantung pada jumlah memori yang tersedia. Ukuran partisi yang lebih kecil, seperti 50 atau 100, memerlukan lebih sedikit memori, tetapi lebih banyak menunggu atas nama SDK. |
50 | Jika Anda memiliki banyak memori yang tersedia, coba tingkatkan partitionSize menjadi 1.000 atau lebih. |
batch.batchSize |
Jumlah permintaan yang dikelompokkan bersama. Di akhir partisi, SDK akan menunggu semua permintaan batch untuk diproses dari partisi. Batch yang lebih besar memerlukan waktu tunggu yang lebih lama. | 10 | Coba turunkan ukuran tumpukan. |
batch.maxActiveBatches |
Jumlah batch yang diizinkan secara serentak. | 20 | Jika menurunkan batchSize , Anda harus menambahkan maxActiveBatches sesuai dengan formula ini: maxActiveBatches = (partitionSize / batchSize ) + 50. Misalnya, jika partititionSize Anda adalah 1.000 dan batchSize Anda 5, maxActiveBatches Anda harus 250. Tambahan 50 adalah buffer untuk permintaan percobaan ulang. Peningkatan ini memungkinkan konektor untuk mengelompokkan semua permintaan tanpa pemblokiran. |
traverse.threadPoolSize |
Jumlah thread yang dibuat konektor untuk memungkinkan pemrosesan paralel. Satu iterator mengambil operasi (biasanya objek RepositoryDoc ) secara serial, tetapi proses panggilan API secara paralel menggunakan jumlah thread threadPoolSize . Setiap thread memproses item satu per satu. Default 50 akan memproses maksimal 50 item secara bersamaan dan dibutuhkan waktu sekitar 4 detik untuk memproses setiap item (termasuk permintaan pengindeksan). |
50 | Coba tingkatkan threadPoolSize dengan kelipatan 10. |
Terakhir, pertimbangkan untuk menggunakan metode setRequestMode()
untuk mengubah mode permintaan API (ASYNCHRONOUS
atau SYNCHRONOUS
).
Untuk informasi tambahan tentang parameter file konfigurasi, lihat Parameter konfigurasi yang disediakan Google.
Throughput pengindeksan untuk ListTraversalConnector
Secara default, konektor yang mengimplementasikan ListTraversalConnnector menggunakan
traverser tunggal untuk mengindeks item Anda. Untuk meningkatkan throughput pengindeksan, Anda dapat
membuat beberapa traverser, masing-masing dengan konfigurasinya sendiri yang berfokus pada
status item (NEW_ITEM
, MODIFIED
, dan seterusnya). Tabel berikut mencantumkan
setelan konfigurasi untuk meningkatkan throughput:
Setelan | Deskripsi | Default | Perubahan konfigurasi untuk dicoba |
---|---|---|---|
repository.traversers = t1, t2, t3, ... | Membuat satu atau beberapa traverser individual dengan t1, t2, t3, ... adalah nama unik masing-masing traverser. Setiap traverser yang bernama memiliki kumpulan setelannya sendiri yang diidentifikasi menggunakan nama unik traverser, seperti traversers.t1.hostload dan traversers.t2.hostload | Satu traverser | Gunakan setelan ini untuk menambahkan traverser tambahan |
traversers.t1.hostload = n | Mengidentifikasi jumlah thread, n, yang akan digunakan untuk mengindeks item secara bersamaan. | 5 | Lakukan eksperimen dengan menyesuaikan n berdasarkan seberapa banyak beban yang ingin dimasukkan ke repositori. Mulailah dengan nilai 10 atau yang lebih tinggi. |
schedule.pollQueueIntervalSecs = s | Mengidentifikasi jumlah detik, s, untuk menunggu sebelum polling ulang . Konektor konten akan terus melakukan polling pada item selama API menampilkan item dalam respons polling. Jika respons polling kosong, konektor menunggu s detik sebelum mencoba lagi. Setelan ini hanya digunakan oleh ListingConnector | 10 | Coba turunkan ke 1. |
traverser.t1.pollRequest.statuses = status1, status2, … | Menentukan status, status1, status2, …, dari item yang akan diindeks. Misalnya, menetapkan status1 ke NEW_ITEM dan status2 ke MODIFIED akan menginstruksikan traverser t1 untuk mengindeks item dengan status tersebut saja. | Satu traverser memeriksa untuk semua status | Bereksperimen dengan memiliki polling berbagai traverser untuk berbagai status. |
Untuk informasi tambahan tentang parameter file konfigurasi, lihat Parameter konfigurasi yang disediakan Google.
SDK kehabisan waktu atau mengganggu saat mengupload file berukuran besar
Jika Anda mengalami waktu tunggu SDK atau
mengganggu saat mengupload file berukuran besar,
menentukan waktu tunggu yang lebih
besar dengan menggunakan
traverser.timeout=s
(dengan s = jumlah detik). Nilai ini mengidentifikasi berapa lama pekerja
thread harus memproses item. Waktu tunggu default di SDK adalah 60 detik
untuk thread traverser. Selain itu, jika Anda mengalami permintaan API individual
waktu tunggu habis, gunakan metode berikut untuk meningkatkan nilai waktu tunggu permintaan:
Parameter waktu tunggu permintaan | Deskripsi | Default |
---|---|---|
indexingService.connectTimeoutSeconds |
Waktu tunggu koneksi habis untuk permintaan API pengindeksan. | 120 detik. |
indexingService.readTimeoutSeconds |
Waktu tunggu baca untuk permintaan API pengindeksan. | 120 detik. |