Google Cloud Search SDK'sı, tüm bağlayıcılar tarafından kullanılan ve Google tarafından sağlanan çeşitli yapılandırma parametreleri içerir. Bu ayarları nasıl ayarlayacağınızı bilmek, verilerin dizine eklenmesini büyük ölçüde kolaylaştırabilir. Bu kılavuzda, dizine ekleme sırasında ortaya çıkabilecek çeşitli sorunlar ve bu sorunları çözmek için kullanılan ayarlar listelenmiştir.
FullTraversalConnector için dizine ekleme işleme hızı düşük
Aşağıdaki tabloda, FullTraversalConnector için veri akışını iyileştirmeye yönelik yapılandırma ayarları listelenmiştir:
Yer | Açıklama | Varsayılan | Denenecek yapılandırma değişikliği |
---|---|---|---|
traverse.partitionSize |
Ek APIOperation() getirilmeden önce toplu olarak işlenecek ApiOperation() sayısı. SDK, ek öğeler getirmeden önce mevcut bölümün işlenmesini bekler. Bu ayar, kullanılabilir bellek miktarına bağlıdır. 50 veya 100 gibi daha küçük bölüm boyutları daha az bellek gerektirir ancak SDK için daha fazla bekleme süresi gerektirir. |
50 | Yeterli belleğiniz varsa partitionSize değerini 1.000 veya daha fazla artırmayı deneyin. |
batch.batchSize |
Birlikte gruplandırılan isteklerin sayısı. Bölümlendirmenin sonunda SDK, tüm toplu isteklerin bölümden işlenmesini bekler. Daha büyük gruplar için daha uzun süre beklemeniz gerekir. | 10 | Grup boyutunu düşürmeyi deneyin. |
batch.maxActiveBatches |
Eşzamanlı olarak çalıştırılabilecek toplu işlem sayısı. | 20 | batchSize değerini düşürürseniz maxActiveBatches değerini şu formüle göre artırmanız gerekir: maxActiveBatches = (partitionSize / batchSize ) + 50. Örneğin, partititionSize değeriniz 1.000 ve batchSize değeriniz 5 ise maxActiveBatches değeriniz 250 olmalıdır. Ek 50, yeniden deneme istekleri için bir arabellektir. Bu artış, bağlayıcının engellemeden tüm istekleri toplu olarak göndermesine olanak tanır. |
traverse.threadPoolSize |
Konnektörün paralel işlemeye izin vermek için oluşturduğu iş parçacıklarının sayısı. Tek bir iteratör, işlemleri (genellikle RepositoryDoc nesnesi) seri olarak getirir ancak API çağrıları threadPoolSize sayıda iş parçacığı kullanarak paralel olarak işler. Her mesaj dizisi bir seferde bir öğe işler. Varsayılan 50 değeri, aynı anda en fazla 50 öğe işlenir ve tek bir öğenin işlenmesi yaklaşık 4 saniye sürer (dizine ekleme isteği dahil). |
50 | threadPoolSize değerini 10'un katı olacak şekilde artırmayı deneyin. |
Son olarak, API istek modunu (ASYNCHRONOUS
veya SYNCHRONOUS
) değiştirmek için setRequestMode()
yöntemini kullanabilirsiniz.
Yapılandırma dosyası parametreleri hakkında daha fazla bilgi için Google tarafından sağlanan yapılandırma parametreleri bölümüne bakın.
ListTraversalConnector için dizine ekleme işleme hızı düşük
ListTraversalConnnector'ı uygulayan bir bağlayıcı, varsayılan olarak öğelerinizi dizine eklemek için tek bir gezgin kullanır. Dizine ekleme işleminin iş hacmini artırmak için belirli öğe durumlarına (NEW_ITEM
, MODIFIED
vb.) odaklanan, her biri kendi yapılandırmasına sahip birden fazla gezgin oluşturabilirsiniz. Aşağıdaki tabloda, veri akışını iyileştirmeye yönelik yapılandırma ayarları listelenmiştir:
Yer | Açıklama | Varsayılan | Denenecek yapılandırma değişikliği |
---|---|---|---|
repository.traversers = t1, t2, t3, ... | t1, t2, t3, ... her birinin benzersiz adı olmak üzere bir veya daha fazla ayrı gezgin oluşturur. Her adlandırılmış gezginin, gezginin benzersiz adı (ör. traversers.t1.hostload ve traversers.t2.hostload ) kullanılarak tanımlanan kendi ayar grubu vardır. | Bir geçiş aracı | Ek tarayıcılar eklemek için bu ayarı kullanın |
traversers.t1.hostload = n | Öğeleri aynı anda dizine eklemek için kullanılacak ileti dizilerinin sayısını (n) tanımlar. | 5 | Deponuzdan ne kadar yük almak istediğinize bağlı olarak n'ü ayarlama denemeleri yapın. 10 veya daha yüksek değerlerle başlayın. |
schedule.pollQueueIntervalSecs = s | Yeniden anket yapmadan önce beklenecek saniye sayısını (s) tanımlar . API, anket yanıtında öğeler döndürdüğü sürece içerik bağlayıcı, öğeleri ankete almaya devam eder. Anket yanıtı boş olduğunda bağlayıcı, tekrar denemeden önce s saniye bekler. Bu ayar yalnızca ListingConnector tarafından kullanılır. | 10 | 1'e düşürmeyi deneyin. |
traverser.t1.pollRequest.statuses = status1, status2, … | Dizine eklenecek öğelerin durumlarını (status1, status2, …) belirtir. Örneğin, status1'ü NEW_ITEM ve status2'yi MODIFIED olarak ayarlamak, t1 gezginine yalnızca bu duruma sahip öğeleri dizine eklemesini söyler. | Bir gezgin tüm durumları kontrol eder | Farklı durum için farklı tarayıcıların anket yapmasını deneyebilirsiniz. |
Yapılandırma dosyası parametreleri hakkında daha fazla bilgi için Google tarafından sağlanan yapılandırma parametreleri bölümüne bakın.
Büyük dosyalar yüklenirken SDK zaman aşımına uğrar veya kesinti yaşanır
Büyük dosyaları yüklerken SDK zaman aşımı veya kesinti yaşıyorsanız traverser.timeout=s
(s = saniye sayısı) kullanarak daha uzun bir zaman aşımı belirtin. Bu değer, işleyici iş parçacıklarının bir öğeyi işlemesi için ne kadar süre gerektiğini tanımlar. SDK'da varsayılan zaman aşımı, tarayıcı ileti dizileri için 60 saniyedir. Ayrıca, API isteklerinin zaman aşımına uğradığını fark ederseniz istek zaman aşımı değerlerini artırmak için aşağıdaki yöntemleri kullanın:
İstek zaman aşımı parametresi | Açıklama | Varsayılan |
---|---|---|
indexingService.connectTimeoutSeconds |
Dizine ekleme API isteklerinde bağlantı zaman aşımı. | 120 saniye. |
indexingService.readTimeoutSeconds |
Dizine ekleme API isteklerinin okuma zaman aşımı. | 120 saniye. |