Hız Sınırları

Google Ads API, hız sınırlaması için istekleri istemci müşteri kimliği (CID) ve geliştirici jetonu başına saniyedeki sorgu sayısına (QPS) göre gruplandırır. Bu nedenle, ölçüm hem CID'lerde hem de geliştirici jetonlarında bağımsız olarak uygulanır. Google Ads API, istekleri ölçmek ve uygun bir QPS sınırı belirlemek için Token Bucket algoritmasını kullanır. Bu nedenle, tam sınır herhangi bir zamanda genel sunucu yüküne bağlı olarak değişir.

Sıklık sınırları, bir kullanıcının Google Ads API sunucularını çok sayıda istekle (kasıtlı veya kasıtsız olarak) aşırı yükleyerek diğer kullanıcılar için hizmeti kesintiye uğratmasını önlemek amacıyla uygulanır.

Hız sınırlarını ihlal eden istekler şu hatayla reddedilir: RESOURCE_TEMPORARILY_EXHAUSTED.

Hem istek sayısını aktif olarak azaltarak hem de istemci tarafında saniyedeki sorgu sayısını sınırlayarak uygulamanızın kontrolünü elinize alabilir ve sıklık sınırlarını azaltabilirsiniz.

Hız sınırını aşma olasılığını azaltmanın çeşitli yolları vardır. Mesajlaşma, yeniden teslim ve sınırlama gibi Enterprise Integration Patterns (EIP) kavramları hakkında bilgi edinmek daha sağlam bir istemci uygulaması oluşturmanıza yardımcı olabilir.

Aşağıda, karmaşıklık düzeyine göre sıralanmış önerilen uygulamalar yer almaktadır. Daha basit stratejiler üstte, daha sağlam ancak karmaşık mimariler ise altta verilmiştir:

Eşzamanlı görevleri sınırlama

Hız sınırlarının aşılmasının temel nedenlerinden biri, istemci uygulamasının çok sayıda paralel görev oluşturmasıdır. Bir istemci uygulamasının sahip olabileceği paralel istek sayısını sınırlamasak da bu, geliştirici jetonu düzeyinde saniyedeki istek sayısı sınırını aşabilir.

İstek gönderecek eşzamanlı görevlerin toplam sayısı için (tüm işlemler ve makinelerde) makul bir üst sınır belirlemeniz ve hız sınırını aşmadan veriminizi optimize etmek için bu sınırı yukarı doğru ayarlamanız önerilir.

Ayrıca, istemci tarafında QPS'yi sınırlamayı da düşünebilirsiniz (Sınırlama ve hız sınırlayıcılar bölümüne göz atın).

İstekleri gruplama

Birden fazla işlemi tek bir istekte toplu olarak göndermeyi deneyin. Bu özellik en çok MutateFoo aramalarında geçerlidir. Örneğin, AdGroupAd öğesinin birden fazla örneğinin durumunu güncelliyorsanız her AdGroupAd için MutateAdGroupAds öğesini bir kez çağırmak yerine MutateAdGroupAds öğesini bir kez çağırıp birden fazla operations iletebilirsiniz. Ek örnekler için toplu işlemlerle ilgili rehberimize bakın.

İstekleri toplu işleme, toplam istek sayısını azaltır ve dakikadaki istek sayısı sınırını düşürür. Ancak tek bir hesaba karşı çok sayıda işlem gerçekleştirirseniz dakikadaki işlem sayısı sınırını tetikleyebilir.

Kısıtlama ve sıklık sınırlayıcılar

İstemci uygulamanızdaki toplam iş parçacığı sayısını sınırlamanın yanı sıra istemci tarafında hız sınırlayıcılar da uygulayabilirsiniz. Bu, işlemleriniz ve/veya kümelerinizdeki tüm iş parçacıklarının istemci tarafında belirli bir sorgu/saniye sınırı tarafından yönetilmesini sağlayabilir.

Guava Rate Limiter'ı inceleyebilir veya kümelenmiş bir ortam için kendi Token Bucket tabanlı algoritmanızı uygulayabilirsiniz. Örneğin, jeton oluşturup bunları veritabanı gibi paylaşılan bir işlemsel depolama alanında saklayabilirsiniz. Her istemcinin, isteği işlemeden önce bir jeton alıp kullanması gerekir. Jetonlar tükendiyse istemcinin bir sonraki jeton grubu oluşturulana kadar beklemesi gerekir.

Sıraya ekleme

İstek ve tüketici oranlarını kontrol ederken işlem yükü dağıtımı için mesaj sırası çözümü kullanılır. Açık kaynaklı ve tescilli olmak üzere çeşitli mesaj sırası seçenekleri vardır. Bunların çoğu farklı dillerle çalışabilir.

Mesaj kuyruklarını kullanırken kuyruğa mesaj gönderen birden fazla üreticiniz ve bu mesajları işleyen birden fazla tüketiciniz olabilir. Kısıtlamalar, eşzamanlı tüketici sayısı sınırlandırılarak tüketici tarafında uygulanabilir veya üreticiler ya da tüketiciler için hız sınırlayıcılar ya da kısıtlayıcılar uygulanabilir.

Örneğin, bir ileti tüketicisi hız sınırı hatasıyla karşılaşırsa bu tüketici, isteği yeniden denenmek üzere sıraya döndürebilir. Aynı zamanda, bu tüketici diğer tüm tüketicileri de hatadan kurtulmak için işlemeyi birkaç saniye duraklatmaya yönlendirebilir.