Google Cloud Search SDK berisi beberapa parameter konfigurasi yang disediakan Google yang digunakan oleh semua konektor. Mengetahui cara menyesuaikan setelan ini dapat sangat menyederhanakan pengindeksan data. Panduan ini mencantumkan beberapa masalah yang dapat muncul selama pengindeksan dan setelan yang digunakan untuk menyelesaikannya.
Throughput pengindeksan rendah untuk FullTraversalConnector
Tabel berikut mencantumkan setelan konfigurasi untuk meningkatkan throughput FullTraversalConnector:
Setelan | Deskripsi | Default | Perubahan konfigurasi yang dapat 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 1000 atau lebih. |
batch.batchSize |
Jumlah permintaan yang dikelompokkan bersama. Di akhir partisi, SDK menunggu semua permintaan yang di-batch diproses dari partisi. Kelompok yang lebih besar memerlukan waktu tunggu yang lebih lama. | 10 | Coba kurangi ukuran batch. |
batch.maxActiveBatches |
Jumlah batch yang dapat dijalankan secara bersamaan. | 20 | Jika Anda menurunkan batchSize , Anda harus menaikkan maxActiveBatches sesuai dengan formula ini: maxActiveBatches = (partitionSize / batchSize ) + 50. Misalnya, jika partititionSize Anda adalah 1.000 dan batchSize Anda adalah 5, maxActiveBatches Anda adalah 250. Tambahan 50 adalah buffer untuk permintaan percobaan ulang. Peningkatan ini memungkinkan konektor 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 panggilan API diproses secara paralel menggunakan jumlah thread threadPoolSize . Setiap thread memproses satu item dalam satu waktu. Nilai default 50 hanya akan memproses maksimal 50 item secara bersamaan dan memerlukan waktu sekitar 4 detik untuk memproses setiap item (termasuk permintaan pengindeksan). |
50 | Coba naikkan 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 rendah untuk ListTraversalConnector
Secara default, konektor yang menerapkan ListTraversalConnnector menggunakan
satu traverser untuk mengindeks item Anda. Untuk meningkatkan throughput pengindeksan, Anda dapat membuat beberapa penelusur, masing-masing dengan konfigurasinya sendiri yang berfokus pada status item tertentu (NEW_ITEM
, MODIFIED
, dan sebagainya). Tabel berikut mencantumkan setelan konfigurasi untuk meningkatkan throughput:
Setelan | Deskripsi | Default | Perubahan konfigurasi yang dapat dicoba |
---|---|---|---|
repository.traversers = t1, t2, t3, ... | Membuat satu atau beberapa penelusur individual dengan t1, t2, t3, ... adalah nama unik masing-masing penelusur. Setiap traverser bernama memiliki serangkaian setelannya sendiri yang diidentifikasi menggunakan nama unik traverser, seperti traversers.t1.hostload dan traversers.t2.hostload | Satu penjelajah | Gunakan setelan ini untuk menambahkan pengelana tambahan |
traversers.t1.hostload = n | Mengidentifikasi jumlah thread, n, yang akan digunakan untuk mengindeks item secara bersamaan. | 5 | Lakukan eksperimen dengan menyesuaikan n berdasarkan jumlah beban yang ingin Anda berikan pada repositori. Mulai dengan nilai 10 atau lebih tinggi. |
schedule.pollQueueIntervalSecs = s | Mengidentifikasi jumlah detik, s, untuk menunggu sebelum melakukan polling ulang . Konektor konten terus melakukan polling item selama API menampilkan item dalam respons polling. Saat respons polling kosong, konektor menunggu selama 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, …, item yang akan diindeks. Misalnya, menyetel status1 ke NEW_ITEM dan status2 ke MODIFIED akan menginstruksikan traverser t1 untuk mengindeks hanya item dengan status tersebut. | Satu traverser memeriksa semua status | Bereksperimen dengan membuat traverser yang berbeda melakukan polling untuk status yang berbeda. |
Untuk informasi tambahan tentang parameter file konfigurasi, lihat Parameter konfigurasi yang disediakan Google.
SDK mengalami waktu tunggu habis atau terganggu saat mengupload file besar
Jika Anda mengalami waktu tunggu atau gangguan SDK saat mengupload file besar,
tentukan waktu tunggu yang lebih besar menggunakan
traverser.timeout=s
(dengan s = jumlah detik). Nilai ini mengidentifikasi berapa lama thread
pekerja harus memproses item. Waktu tunggu default di SDK adalah 60 detik untuk thread traverser. Selain itu, jika Anda mengalami waktu tunggu permintaan API individual habis, gunakan metode berikut untuk meningkatkan nilai waktu tunggu permintaan:
Parameter waktu tunggu permintaan | Deskripsi | Default |
---|---|---|
indexingService.connectTimeoutSeconds |
Waktu tunggu koneksi untuk permintaan Indexing API. | 120 detik. |
indexingService.readTimeoutSeconds |
Waktu tunggu baca untuk permintaan Indexing API. | 120 detik. |