Google Ads .NET istemci kitaplığı, uygulamanızın Google Ads API ile etkileşimlerini minimum düzeyde yapılandırmayla basitleştirir. Ancak genel performans, kitaplığın nasıl kullanıldığına ve uygulamanızla nasıl entegre edildiğine büyük ölçüde bağlıdır.
Bu kılavuzda, .NET uygulamalarına özgü performans optimizasyonları ele alınmakta ve genellikle Google Ads API için geçerli olan en iyi uygulamalar desteklenmektedir.
Mümkün olduğunda GoogleAdsClient'ı yeniden kullanın
GoogleAdsClient
, API çağrıları yapılırken kullanıcının oturumunu temsil eder. Aşağıdakiler gibi optimizasyonlar sağlar:
- API hizmetlerinin kullandığı gRPC kanallarını önbelleğe alma. Bu, ilk API çağrıları yapılırken kurulum süresini azaltı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 yapması gereken gidiş dönüş sayısını azaltır.
Mümkün olduğunda yönetici düzeyindeki bir hesaptan erişim jetonları kullanın
- Yönetici hesabı düzeyinde verilen bir erişim jetonunuz varsa bu jetonu, söz konusu hesap hiyerarşisindeki tüm Google Ads müşteri hesaplarına API çağrıları yapmak için kullanabilirsiniz. Bu,
GoogleAdsClient
örneklerini yeniden kullanmayla birlikte kullanıldığında, istemci kitaplığının erişim jetonlarını yenilemek için yapması gereken gidiş dönüş sayısını daha da azaltabilir.
Mümkünse Arama yerine SearchStream'i kullanın
GoogleAdsService.Search
, raporun tamamını indirmek için birden fazla sayfaya ayrılmış istek gönderebilirken GoogleAdsService.SearchStream
, rapor boyutundan bağımsız olarak tek bir istek gönderir ve Google Ads API ile kalıcı bir bağlantı başlatır. Search
yanıtının her bir sayfasını istemek için gereken ağ gidiş dönüş süresini ortadan kaldırarak, uygulamanıza bağlı olarak SearchStream
, sayfalamayla karşılaştırıldığında daha iyi performans sunabilir. Bu optimizasyon hakkında daha fazla bilgi edinmek için Arama ve SearchStream karşılaştırması başlıklı makaleyi inceleyin.
Erişim jetonu yenilemelerini manuel olarak yönetme
Google Cloud Functions gibi belirli ortamlarda GoogleAdsClient
örneklerini yeniden kullanmak uygun olmayabilir. Bu tür ortamlarda, verileri korumak ve yeniden kullanmak için kendi en iyi uygulamalarınız olabilir. Bu gibi durumlarda, kendi erişim jetonu yenileme işlemlerinizi gerçekleştirmek için GoogleAdsConfig
sınıfını aşağıdaki gibi 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);
Yayın derlemesi için derleme
Sunucuya dağıtırken uygulamanızı Yayın yapılandırması ile derlediğinizden emin olun. Hata ayıklama yapılandırması kullanıldığında uygulamanız, tam sembolik hata ayıklama bilgileriyle ve optimizasyon olmadan derlenir.
Uygulamanız için profil oluşturma
Performans darboğazlarını belirlemek için uygulamanızı hem CPU hem de bellek kullanımı açısından profilleyin. Visual Studio, uygulamanızın profilini oluşturmanı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
async-await paradigmasını kullanan asynkron programlama, performans darboğazlarını önlemeye ve uygulamanızın genel duyarlılığını artırmaya yardımcı olur. Google Ads .NET kitaplığı, tüm hizmetler ve RPC yöntemleri için asynkron yöntemler oluşturur.
Eşzamansız yöntemlerin iptal edilmesi
Aşağıdaki durumlarda callSettings
parametresini kullanarak CancellationToken
değerini ayarlayabilirsiniz:
CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
cancellationTokenSource.CancelAfter(3000);
CallSettings callSettings = CallSettings.FromCancellationToken(cancellationTokenSource.Token);
string query = "SELECT campaign.name FROM campaign";
var request = new SearchGoogleAdsStreamRequest()
{
CustomerId = customerId.ToString(),
Query = query,
};
GoogleAdsServiceClient googleAdsService = client.GetService(
Services.V19.GoogleAdsService);
googleAdsService.SearchStream(request,
delegate (SearchGoogleAdsStreamResponse resp)
{
foreach (GoogleAdsRow googleAdsRow in resp.Results)
{
// Process the row.
}
}, callSettings
);
Mümkün olduğunda günlük kaydını devre dışı bırakın
Google Ads .NET kitaplığı, günlük kaydını varsayılan olarak devre dışı bırakır ve uygulamanıza daha iyi performans sağlayan, yavaş günlük kaydı yaklaşımı kullanır. Günlüğe kaydetme özelliğini etkinleştirirseniz üretim ortamında devre dışı bıraktığınızdan emin olun. Üretimde belirli başarısız isteklerin olup olmadığını izlemeniz gerekiyorsa uygulamanızın performansını olumsuz etkilemeden aşağıdaki adımlardan birini veya daha fazlasını uygulayabilirsiniz:
- Yalnızca özet günlüklerini etkinleştirin.
- Tam günlükleri
ERROR
düzeyine ayarlayın. - İlgilendiğiniz belirli taleplerin istek kimliğini kaydederek destek kanallarıyla paylaşabilirsiniz.
Daha fazla bilgi için günlük kaydı kılavuzuna bakın.
SearchStream mi yoksa Search yöntemini mi kullanacağınıza karar verme
Google Ads API, nesneleri almak için iki ana yöntem sunar: Search
yöntemi (sayfalandırmayı kullanır) ve SearchStream
(akış kullanır).
SearchStream
, Search
'e kıyasla daha iyi performans sağlar ancak Search
'ün tercih edildiği senaryolar vardır.
Bu iki yöntem hakkında daha fazla bilgi edinmek için yayın raporları kılavuzuna göz atın.
ReadyToRun seçeneğini kullanın
.NET Core 3.1, PublishReadyToRun
ayarını true
olarak belirterek ikili programlarınızı belirli bir platform ve mimariye önceden derleme ve ardından yayınlarken geçerli bir RuntimeIdentifier
belirterek ikili programı yayınlama desteği ekler. Daha fazla bilgi edinmek için ReadyToRun
özelliğiyle ilgili kılavuzu inceleyin.
TieredCompilation'ı kullanma
TieredCompilation
, .NET'in yoğun bölgeleri belirlemesine ve performansını artırmasına olanak tanır. Katmanlı derleme, mevcut olduğunda önceden oluşturulmuş resmi kullanabildiğinden ReadyToRun
seçeneğiyle daha iyi çalışır. Daha fazla bilgi edinmek için TieredCompilation
ile ilgili kılavuzu inceleyin.
Atık toplama (GC) işlemine ince ayar yapma
.NET, çöp toplama (GC) için iki genel profil sağlar: iş istasyonu profili ve sunucu profili. Bu iki profilin farklı performans dengesi vardır. Google Ads .NET kitaplığını kullanan uygulamalar, sunucu profilinde çalıştırıldığında genellikle daha iyi performans gösterir. Aşağıdaki GC ayarlarında hassas ayar yaparak avantaj elde edebilirsiniz.
Sunucudaki çöp toplama: Sunucudaki çöp toplama, .NET çalışma zamanının birden fazla iş parçacığında çalışarak Google Ads API uygulamasına daha iyi performans sunmasına olanak tanır. Daha fazla bilgi için bu kılavuza göz atın. Aşağıdaki satırları uygulamanızın
.csproj
dosyasına ekleyerek sunucudaki çöp toplama özelliğini etkinleştirebilirsiniz.<PropertyGroup> <ServerGarbageCollection>true</ServerGarbageCollection> </PropertyGroup>
Eşzamanlı atık toplama: .NET GC'ye 2. nesildeki atık toplama işlemi için özel bir iş parçacığı vermek üzere eşzamanlı atık toplamayı etkinleştirebilirsiniz. Bu ayar, büyük boyutlu raporlar işlenirken yararlı olabilir. Uygulamanızın
.csproj
dosyasına aşağıdaki satırları ekleyerek eşzamanlı çöp toplamayı etkinleştirebilirsiniz.<PropertyGroup> <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection> </PropertyGroup>
Sanal makine çöp toplama işlemini sakla:
RetainVMGarbageCollection
Ayarı, silinmesi gereken sanal bellek segmentlerinin gelecekte kullanılmak üzere bir bekleme listesine eklenip eklenmeyeceğini veya işletim sistemine (OS) geri bırakılıp bırakılmayacağını yapılandırır. Uygulamanıza aşağıdaki satırları ekleyerek sanal bellek saklama özelliğini etkinleştirebilirsiniz.<PropertyGroup> <RetainVMGarbageCollection>true</RetainVMGarbageCollection> </PropertyGroup>
Bir iş istasyonu ile sunucu arasında bir kurulum seçerek GC'nizde ince ayar yapabilirsiniz. Tüm ilgili ayarlar, .NET Core uygulamanızın runtimeconfig.json
dosyasında, bir ortam değişkeninde veya .NET SDK uygulamanızın App.config
dosyasında belirtilir.