Bağlayıcı ayarlarını düzenleyin

Google Cloud Search SDK'sı, tüm bağlayıcılar tarafından kullanılan, Google tarafından sağlanan çeşitli yapılandırma parametrelerini içerir. Bu ayarları nasıl inceleyeceğinizi bilmek, verilerin dizine eklenmesini büyük ölçüde kolaylaştırabilir. Bu kılavuzda, dizine ekleme sırasında ortaya çıkabilecek bazı sorunlar ve bunları çözmek için kullanılan ayarlar listelenmektedir.

FullTraversalConnector için dizine ekleme işleme hızı düşük

Aşağıdaki tabloda, FullTraversalConnector için işleme hızını iyileştirecek yapılandırma ayarları listelenmektedir:

Yer Açıklama Varsayılan Denenecek yapılandırma değişikliği
traverse.partitionSize Ek APIOperation() getirilmeden önce gruplar halinde işlenecek ApiOperation() sayısıdır. SDK, ek öğeleri 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 adına daha uzun süre bekler. 50 Yüksek miktarda belleğiniz varsa partitionSize değerini 1.000 veya daha fazla olacak şekilde artırmayı deneyin.
batch.batchSize Bir arada gruplanan isteklerin sayısı. Bölümlendirmenin sonunda SDK, tüm toplu isteklerin bölümden işlenmesini bekler. Daha büyük gruplar daha uzun süre beklemenizi gerektirir. 10 Grup boyutunu düşürmeyi deneyin.
batch.maxActiveBatches Eşzamanlı olarak yürütülebilecek grupların sayısı. 20 batchSize değerini düşürürseniz maxActiveBatches öğesini şu formüle göre artırmanız gerekir:

maxActiveBatches = (partitionSize / batchSize) + 50. Örneğin partititionSize değeriniz 1000 ve batchSize değeriniz 5 ise maxActiveBatches değeriniz 250 olmalıdır. Fazladan 50, yeniden deneme istekleri için bir tampondur. Bu artış, bağlayıcının tüm istekleri engellemeden toplu olarak işlemesine olanak tanır.
traverse.threadPoolSize Bağlayıcının paralel işlemeye izin vermek için oluşturduğu iş parçacığı sayısı. Tek bir yineleme, işlemleri (genellikle RepositoryDoc nesne) seri olarak getirir ancak API çağrıları, threadPoolSize sayıda iş parçacığı kullanarak paralel olarak gerçekleşir. Her ileti dizisinde bir defada bir öğe işlenir. Varsayılan değer olan 50, aynı anda en fazla 50 öğeyi işler ve tek bir öğenin (dizine ekleme isteği dahil) işlenmesi yaklaşık 4 saniye sürer. 50 threadPoolSize değerini 10'un katlarıyla artırmayı deneyin.

Son olarak, API isteği modunu (ASYNCHRONOUS veya SYNCHRONOUS) değiştirmek için setRequestMode() yöntemini kullanmayı düşünebilirsiniz.

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

Varsayılan olarak, ListTraversalConnnector yönergesini uygulayan bir bağlayıcı, öğelerinizi dizine eklemek için tek bir taşıyıcı kullanır. Dizine ekleme performansını artırmak için belirli öğe durumlarına (NEW_ITEM, MODIFIED vb.) odaklanarak her biri kendi yapılandırmasına sahip birden fazla geçiş aracı oluşturabilirsiniz. Aşağıdaki tabloda, işleme hızını iyileştirecek yapılandırma ayarları listelenmiştir:

.
YerAçıklamaVarsayılanDenenecek yapılandırma değişikliği
repository.traversers = t1, t2, t3, ...Bir veya daha fazla bağımsız geçiş yapan oluşturur. Burada t1, t2, t3, ..., her birinin benzersiz adıdır. Adlandırılmış her gezgin, gezenin benzersiz adı kullanılarak tanımlanan kendi ayar kümesine sahiptir (ör. traversers.t1.hostload ve traversers.t2.hostload)Bir gezginBaşka gezginler eklemek için bu ayarı kullanın
traversers.t1.hostload = nÖğeleri aynı anda dizine eklemek için kullanılacak ileti dizisi sayısını (n) tanımlar.5Deponuza ne kadar yük koymak istediğinize bağlı olarak n ince ayarı ile denemeler yapın. 10 veya üzeri değerlerle başlayın.
schedule.pollQueueIntervalSecs = sYeniden anket yapmadan önce beklenecek saniye sayısını (s) tanımlar . API, anket yanıtındaki öğeleri döndürdüğü sürece içerik bağlayıcısı öğeleri yoklamaya 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ır101'e düşürmeyi deneyin.
traverser.t1.pollRequest.statuses = status1, status2, …Dizine eklenecek öğelerin (status1, status2, ) durumlarını belirtir. Örneğin, status1 politikası NEW_ITEM ve status2 değerinin MODIFIED olarak ayarlanması, gezgin t1 kullanıcısına yalnızca bu durumlara sahip öğeleri dizine eklemesi talimatını verir.Bir gezgin tüm durumları kontrol ederFarklı durumlar için farklı gezginler anketleri ile denemeler yapın.

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 kesintiye uğrar

Büyük dosyaları yüklerken SDK zaman aşımı veya kesintilerle karşılaşıyorsanız traverser.timeout=s kullanarak (burada s = saniye sayısı) daha büyük bir zaman aşımı belirtin. Bu değer, çalışan iş parçacıklarının bir öğeyi ne kadar süreyle işlemesi gerektiğini tanımlar. SDK'daki varsayılan zaman aşımı, geçişçi iş parçacıkları için 60 saniyedir. Ayrıca, API isteklerinin her biri zaman aşımına uğruyorsa 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 API isteklerinin dizine eklenmesi için bağlantı zaman aşımı. 120 saniye uzunluğundadır.
indexingService.readTimeoutSeconds API isteklerinin dizine eklenmesi için okuma zaman aşımı. 120 saniye uzunluğundadır.