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

Google Cloud Search SDK, tüm bağlayıcılar tarafından kullanılan, Google tarafından sağlanan çeşitli yapılandırma parametreleri içerir. Bu ayarları nasıl düzenleyeceğinizi 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 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ı artırmaya 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 gruplar halinde işlenecek ApiOperation() sayısı.APIOperation() 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'nın daha uzun süre beklemesi gerekir. 50 Çok fazla kullanılabilir belleğiniz varsa partitionSize değerini 1.000 veya daha fazla yapmayı deneyin.
batch.batchSize Birlikte gruplandırılan istek sayısı. SDK, bölümlendirme işleminin sonunda tüm toplu isteklerin bölümden işlenmesini bekler. Daha büyük gruplar için daha uzun süre beklemeniz gerekir. 10 Toplu iş boyutunu azaltmayı deneyin.
batch.maxActiveBatches İzin verilen eşzamanlı olarak yürütülen toplu işlemlerin sayısı. 20 batchSize değerini düşürürseniz maxActiveBatches değerini şu formüle göre yükseltmeniz gerekir:

maxActiveBatches = (partitionSize / batchSize) + 50. Örneğin, partititionSize 1.000 ve batchSize 5 ise maxActiveBatches 250 olmalıdır. Ek 50, yeniden deneme istekleri için bir arabellek görevi görür. Bu artış, bağlayıcının tüm istekleri engellemeden toplu olarak işlemesine olanak tanır.
traverse.threadPoolSize Konnektörün paralel işleme için oluşturduğu iş parçacığı sayısı. Tek bir yineleyici, işlemleri (genellikle RepositoryDoc nesneleri) seri olarak getirir ancak API çağrıları, threadPoolSize iş parçacığı sayısı kullanılarak paralel olarak işlenir. Her iş parçacığı, tek seferde bir öğe işler. Varsayılan değer olan 50, aynı anda en fazla 50 öğeyi işler ve tek bir öğenin işlenmesi (dizin oluşturma isteği dahil) yaklaşık 4 saniye sürer. 50 threadPoolSize değerini 10'un katları şeklinde artırmayı deneyin.

Son olarak, API isteği 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 başlıklı makaleye bakın.

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

ListTraversalConnnector'ı uygulayan bir bağlayıcı, öğelerinizi varsayılan olarak tek bir geçiş aracıyla indeksler. Dizin oluşturma işleme hızını artırmak için her biri belirli öğe durumlarına (NEW_ITEM, MODIFIED vb.) odaklanan kendi yapılandırmasına sahip birden fazla geçiş aracı oluşturabilirsiniz. Aşağıdaki tabloda, verimi artırmaya yönelik yapılandırma ayarları listelenmiştir:

.
YerAçıklamaVarsayılanDenenecek 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 bağımsız geçiş aracı oluşturur. Adlandırılmış her geçiş aracının, geçiş aracının benzersiz adı (ör. traversers.t1.hostload ve traversers.t2.hostload) kullanılarak tanımlanan kendi ayar grubu vardır.Bir geçiş cihazıEk geçişler eklemek için bu ayarı kullanın.
traversers.t1.hostload = nÖğeleri aynı anda dizine eklemek için kullanılacak iş parçacığı sayısını (n) tanımlar.5Deponuza ne kadar yük koymak istediğinize bağlı olarak n ayarlarını deneme yanılma yöntemiyle yapın. 10 veya daha yüksek değerlerle başlayın.
schedule.pollQueueIntervalSecs = sYeniden yoklamadan önce beklenecek süreyi (saniye) s olarak tanımlar . İçerik bağlayıcı, API yoklama yanıtında öğeler döndürdüğü sürece öğeleri yoklamaya devam eder. Yoklama yanıtı boş olduğunda bağlayıcı, tekrar denemeden önce s saniye bekler. Bu ayar yalnızca ListingConnector tarafından kullanılır.101'e düşürmeyi deneyin.
traverser.t1.pollRequest.statuses = status1, status2, …Dizin oluşturulacak öğelerin durumlarını (status1, status2, ) belirtir. Örneğin, status1 değerini NEW_ITEM, status2 değerini ise MODIFIED olarak ayarlamak, traverser t1'a yalnızca bu durumlara sahip öğeleri dizine eklemesi talimatını verir.Tüm durumlar için tek bir geçiş kontrolüFarklı geçiş yapanların farklı durumlar için yoklama yapmasıyla ilgili denemeler yapın.

Yapılandırma dosyası parametreleri hakkında daha fazla bilgi için Google tarafından sağlanan yapılandırma parametreleri başlıklı makaleye bakın.

Büyük dosyalar yüklenirken SDK zaman aşımları veya kesintiler

Büyük dosyaları yüklerken SDK zaman aşımı veya kesintilerle karşılaşırsanız traverser.timeout=s kullanarak daha uzun bir zaman aşımı belirtin (burada s = saniye sayısıdır). Bu değer, çalışan iş parçacıklarının bir öğeyi ne kadar süre içinde işlemesi gerektiğini tanımlar. SDK'daki varsayılan zaman aşımı, traverser iş parçacıkları için 60 saniyedir. Ayrıca, tek tek 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'si istekleri için bağlantı zaman aşımı. 120 saniye.
indexingService.readTimeoutSeconds Dizine ekleme API'si istekleri için okuma zaman aşımı. 120 saniye.