Uygulama performansı

Google Ads .NET istemci kitaplığı, uygulamanızın Google Ads API ile etkileşimini basitleştirir ve minimum yapılandırmaya sahip olur. Ancak genel performans büyük ölçüde kitaplığın nasıl kullanıldığına ve uygulamanızla nasıl entegre olduğuna bağlıdır.

Bu kılavuz, .NET uygulamalarına özel performans optimizasyonlarını kapsamakta ve genel olarak Google Ads API için geçerli olan en iyi uygulamaları tamamlamaktadır.

Mümkün olduğunda GoogleAdsClient'ı yeniden kullanın

GoogleAdsClient, API çağrıları yaparken kullanıcının oturumunu temsil eder. Aşağıdaki gibi optimizasyonlar sağlar:

  • API hizmetleri tarafından kullanılan gRPC kanallarını önbelleğe alma. Bu, ilk API çağrıları yaparken kurulum süresini kısaltır.
  • Mümkün olduğunda erişim jetonlarını yeniden kullanma. Bu, Google Ads .NET istemci kitaplığının erişim jetonlarını yenilemek için gerçekleştirmesi gereken gidiş dönüş sayısını azaltır.

Mümkün olduğunda yönetici düzeyindeki hesaplardan erişim jetonları kullanın

  • Yönetici hesabı düzeyinde verilmiş bir erişim jetonunuz varsa ilgili hesap hiyerarşisi altındaki tüm Google Ads müşteri hesaplarına yönelik API çağrıları yapmak için bu jetonu kullanabilirsiniz. Bu, GoogleAdsClient örneklerinin yeniden kullanılmasıyla birlikte kullanıldığında istemci kitaplığının erişim jetonlarını yenilemek için gerçekleştirmesi gereken gidiş dönüş sayısını daha da azaltabilir.

Mümkün olduğunda Arama yerine SearchStream kullanın

GoogleAdsService.Search, raporun tamamını indirmek için birden fazla sayfaya ayrılmış istek gönderebilir. Ancak GoogleAdsService.SearchStream, tek bir istek gönderir ve rapor boyutundan bağımsız olarak Google Ads API ile kalıcı bir bağlantı başlatır. Uygulamanıza bağlı olarak SearchStream, bir Search yanıtının her bir sayfasını istemek için gereken gidiş-dönüş ağ süresini ortadan kaldırarak sayfa oluşturmaya kıyasla daha iyi performans sağlayabilir. Bu optimizasyon hakkında daha fazla bilgi edinmek için Arama ve Arama Akışı bölümüne bakın.

Erişim jetonu yenilemelerini manuel olarak yönetme

Google Cloud Functions gibi belirli ortamlarda GoogleAdsClient örneklerinin yeniden kullanılması uygun olmayabilir. Bu tür ortamlar, verileri korumak ve yeniden kullanmak için kendi en iyi uygulamalarına sahip olabilir. Bu gibi durumlarda, kendi erişim jetonu yenilemelerinizi aşağıdaki şekilde gerçekleştirmek için GoogleAdsConfig sınıfını genişletebilirsiniz.

// Create your own config class by extending the GoogleAdsConfig class.

class MyGoogleAdsConfig : GoogleAdsConfig
{
    public MyGoogleAdsConfig() : base()
    {
        // Disable the library's in-built channel caching mechanism.
        this.UseChannelCache = false;
    }
    protected override ICredential CreateCredentials()
    {
        // TODO: Create your own ICredentials object here. You may refer to the
        // default implementation of GoogleAdsConfig::CreateCreateCredentials
        // for an example.
    }
}

// Use your own config class when initializing the GoogleAdsClient instance.

MyGoogleAdsConfig myconfig = new MyGoogleAdsConfig();
GoogleAdsClient client = new GoogleAdsClient(myconfig);

Sürüm derlemesi için derleyin

Sunucuya dağıtırken Sürüm yapılandırmasını kullanarak uygulamanızı derlediğinizden emin olun. Hata ayıklama yapılandırmasını kullanırken uygulamanız optimizasyon olmadan sembolik hata ayıklama bilgileriyle eksiksiz bir şekilde derlenir.

Uygulamanız için profil oluşturma

Performans sorunlarını belirlemek için uygulamanızın hem CPU hem de bellek kullanımı profilini çıkarın. Visual Studio, uygulamanızın profilini çıkarmanıza yardımcı olacak Teşhis araçları sağlar. Kullanabileceğiniz başka ticari profil oluşturma araçları da vardır.

Eş zamansız yöntemler kullanma

Eşzamansız bekleme paradigmasını kullanan eşzamansız programlama, performans sorunlarını önlemeye ve uygulamanızın genel yanıt verme yeteneğini iyileştirmeye yardımcı olur. Google Ads .NET kitaplığı, tüm hizmetler ve RPC yöntemleri için eşzamansız yöntemler oluşturur.

Mümkün olduğunda günlük kaydını kapatın

Google Ads .NET kitaplığı, günlük kaydını varsayılan olarak devre dışı bırakır ve uygulamanızın daha iyi performans göstermesini sağlayan bir geç günlük kaydı yaklaşımı kullanır. Günlük kaydını etkinleştirirseniz üretim ortamında bu özelliği kapattığınızdan emin olun. Üretimde başarısız olan belirli istekleri izlemeniz gerekiyorsa uygulamanızın performansını olumsuz etkilemeden aşağıdaki adımlardan birini veya daha fazlasını yapabilirsiniz:

  • Yalnızca özet günlüklerini etkinleştirin.
  • Günlüklerin tamamını ERROR düzeyine ayarlayın.
  • Destek kanallarıyla paylaşabileceğiniz belirli ilgi alanlarına ilişkin istek kimliğini kaydedin.

Daha fazla bilgi edinmek için günlük kaydı kılavuzuna bakın.

SearchStream mi yoksa Arama yöntemi mi kullanacağınıza karar verme

Google Ads API, nesneleri almak için iki temel yol sağlar: Search yöntemi (sayfalara ayırma yöntemini kullanır) ve SearchStream (akış yöntemini kullanır).

SearchStream, Search ile kıyaslandığında daha iyi performans gösterir ancak Search'ın tercih edildiği senaryolar vardır.

Bu iki yöntem hakkında daha fazla bilgi edinmek için akış raporları kılavuzuna bakın.

Hazır Çalıştır seçeneğini kullan

.NET Core 3.1, true için bir PublishReadyToRun ayarı belirterek ve ardından geçerli bir RuntimeIdentifier belirterek ikili dosyayı yayınlayarak belirli bir platforma ve mimariye önceden derleme desteği ekler. Daha fazla bilgi edinmek için ReadyToRun özelliğiyle ilgili kılavuza göz atın.

TieredCompilation kullan

TieredCompilation, .NET'in hotspot'ları belirlemesine ve performansını iyileştirmesine olanak tanır. Katmanlı derleme, mümkün olduğunda önceden oluşturulmuş resmi kullanabildiğinden ReadyToRun seçeneğiyle daha iyi sonuç verir. Daha fazla bilgi edinmek için TieredCompilation sayfasındaki kılavuza göz atın.

Atık toplama (GC) uygulamanızda ince ayar yapma

.NET, çöp toplama (GC) için iki genel profil sağlar: bir iş istasyonu profili ve bir sunucu profili. Bu iki profilin performans açısından farklı performansları vardır. Google Ads .NET kitaplığını kullanan uygulamalar, sunucu profilinde çalışırken genellikle daha iyi performans gösterir. Aşağıdaki GC ayarlarında ince ayarlar yapmaktan yararlanabilirsiniz.

  • Sunucu atık toplama: Sunucu atık toplama, .NET çalışma zamanının birden çok iş parçacığı üzerinde çalışarak Google Ads API uygulamasına daha iyi performans sağlamasına olanak tanır. Daha fazla bilgi için bu kılavuza bakın. Aşağıdaki satırları uygulamanızın .csproj dosyasına ekleyerek sunucu atık toplama özelliğini etkinleştirebilirsiniz.

    <PropertyGroup>
      <ServerGarbageCollection>true</ServerGarbageCollection>
    </PropertyGroup>
    
  • Eşzamanlı çöp toplama: .NET GC'ye 2. nesilde çöp toplama için özel bir iş parçacığı sağlamak amacıyla eşzamanlı çöp toplama özelliğini etkinleştirebilirsiniz. Bu ayar, büyük boyutlu raporları işlerken yararlı olabilir. Aşağıdaki satırları uygulamanızın .csproj dosyasına ekleyerek eşzamanlı atık toplamayı etkinleştirebilirsiniz.

    <PropertyGroup>
      <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection>
    </PropertyGroup>
    
  • Sanal makine atık toplama özelliğini koruma: RetainVMGarbageCollection ayarı, silinmesi gereken sanal bellek segmentlerinin ileride kullanılmak üzere bekleme listesine mi alınacağını yoksa işletim sistemine (OS) geri mi alınacağını yapılandırır. Aşağıdaki satırları uygulamanıza ekleyerek sanal bellek saklama özelliğini etkinleştirebilirsiniz.

    <PropertyGroup>
      <RetainVMGarbageCollection>true</RetainVMGarbageCollection>
    </PropertyGroup>
    

Bir iş istasyonu ile sunucu arasında kalan bir kurulum seçerek GC'nizde ince ayar yapabilirsiniz. İlgili tüm ayarlar .NET Core uygulamanızın runtimeconfig.json dosyasında, bir ortam değişkeninde veya .NET SDK uygulamanızın App.config öğesinde belirtilmiştir.