Biblioteka klienta Google Ads .NET upraszcza interakcje aplikacji z interfejsem Google Ads API przy minimalnej konfiguracji z Twojej strony. Ogólna wydajność zależy jednak w dużej mierze od sposobu używania biblioteki i jej integracji z aplikacją.
Ten przewodnik zawiera informacje o optymalizacji wydajności aplikacji .NET i uzupełnia sprawdzone metody, które mają ogólne zastosowanie w przypadku interfejsu Google Ads API.
W miarę możliwości ponownie używaj obiektu GoogleAdsClient
GoogleAdsClient reprezentuje sesję użytkownika podczas wykonywania wywołań interfejsu API. Zapewnia optymalizacje takie jak:
- Buforowanie kanałów gRPC używanych przez usługi API. Skraca to czas konfiguracji podczas wykonywania początkowych wywołań interfejsu API.
- W miarę możliwości ponownie używaj tokenów dostępu. Zmniejsza to liczbę rund, które biblioteka klienta Google Ads .NET musi wykonać, aby odświeżyć tokeny dostępu.
W miarę możliwości używaj tokenów dostępu z konta na poziomie menedżera.
Jeśli masz token dostępu wydany na poziomie konta menedżera, możesz go używać do wywoływania interfejsu API na wszystkich kontach klientów Google Ads w tej hierarchii kont.
W połączeniu z ponownym używaniem instancji GoogleAdsClient może to dodatkowo zmniejszyć liczbę rund, które biblioteka klienta musi wykonać, aby odświeżyć tokeny dostępu.
W miarę możliwości używaj SearchStream zamiast Search
Interfejs Google Ads API udostępnia 2 główne sposoby pobierania obiektów:GoogleAdsService.Search (który korzysta z paginacji) i GoogleAdsService.SearchStream (który korzysta ze strumieniowania).
Search wysyła wiele żądań podzielonych na strony, aby pobrać cały raport, a SearchStream wysyła jedno żądanie i nawiązuje trwałe połączenie z interfejsem Google Ads API niezależnie od rozmiaru raportu. Eliminując czas potrzebny na wysłanie żądania sieciowego i otrzymanie odpowiedzi dla każdej strony odpowiedzi Search,SearchStream zwykle zapewnia lepszą wydajność niż stronicowanie. Więcej informacji o tym, kiedy wybrać poszczególne metody, znajdziesz w przewodniku po raportach o strumieniowaniu.
Ręczne zarządzanie odświeżaniem tokenów dostępu
W niektórych środowiskach bezstanowych, takich jak Google Cloud Functions, ponowne użycie instancji GoogleAdsClient w różnych wywołaniach może być niemożliwe.
W takich środowiskach obowiązują własne sprawdzone metody przechowywania i ponownego wykorzystywania danych.
W Google.Ads.GoogleAds v27.0.0 i nowszych wersjach możesz wstrzyknąć własną wstępnie skonfigurowaną instancję ICredential bezpośrednio w GoogleAdsConfig za pomocą właściwości Credentials i wyłączyć buforowanie kanału (UseChannelCache = false).
Jeśli wolisz umieścić tworzenie danych logowania w niestandardowej klasie konfiguracji (lub używasz starszej wersji biblioteki), możesz rozszerzyć klasę GoogleAdsConfig, aby samodzielnie odświeżać tokeny dostępu w ten sposób:
// Create your own config class by extending the GoogleAdsConfig class.
class MyGoogleAdsConfig : GoogleAdsConfig
{
public MyGoogleAdsConfig() : base()
{
// Disable the library's built-in channel caching mechanism.
UseChannelCache = false;
}
protected override ICredential CreateCredentials()
{
// Create your own ICredential object here. You may refer to the
// default implementation of GoogleAdsConfig.CreateCredentials
// for an example.
}
}
// Use your own config class when initializing the GoogleAdsClient instance.
MyGoogleAdsConfig myConfig = new MyGoogleAdsConfig();
GoogleAdsClient client = new GoogleAdsClient(myConfig);
Kompilowanie kompilacji do publikacji
Podczas wdrażania aplikacji na serwerze pamiętaj, aby skompilować ją za pomocą konfiguracji wersji. W przypadku konfiguracji debugowania aplikacja jest kompilowana z pełnymi symbolicznymi informacjami debugowania i bez optymalizacji kompilatora.
Profilowanie aplikacji
Profiluj aplikację pod kątem wykorzystania procesora i pamięci, aby identyfikować wąskie gardła wydajności. Visual Studio udostępnia narzędzia diagnostyczne, które pomagają profilować aplikację. Dostępne są też inne komercyjne narzędzia do profilowania.
Używanie metod asynchronicznych
Programowanie asynchroniczne z użyciem paradygmatu async-await pomaga uniknąć wąskich gardeł wydajności i zwiększa ogólną szybkość reakcji aplikacji. Biblioteka Google Ads .NET generuje metody asynchroniczne dla wszystkich usług i metod RPC.
Anulowanie metod asynchronicznych
Za pomocą parametru callSettings możesz przekazywać CancellationToken do metod asynchronicznych, takich jak SearchStreamAsync:
using 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.V25.GoogleAdsService);
await googleAdsService.SearchStreamAsync(
request,
(SearchGoogleAdsStreamResponse resp) =>
{
foreach (GoogleAdsRow googleAdsRow in resp.Results)
{
// Process the row.
}
},
callSettings);
Wyłączaj rejestrowanie, gdy to możliwe
Biblioteka Google Ads .NET domyślnie wyłącza rejestrowanie i stosuje podejście leniwego rejestrowania, które zwiększa wydajność aplikacji. Jeśli włączysz rejestrowanie podczas programowania, pamiętaj, aby wyłączyć je w środowisku produkcyjnym. Jeśli chcesz monitorować konkretne nieudane żądania w środowisku produkcyjnym, możesz wykonać co najmniej jedną z tych czynności bez negatywnego wpływu na wydajność aplikacji:
- Włącz tylko dzienniki podsumowania.
- Ustaw pełne logi na poziomie
ERROR. - Zapisz identyfikator żądania w przypadku konkretnych żądań, które się nie powiodły, aby móc go udostępnić kanałom pomocy.
Więcej informacji znajdziesz w przewodniku po rejestrowaniu.
Używanie opcji ReadyToRun
Nowoczesna platforma .NET obsługuje wstępną kompilację plików binarnych na określoną platformę i architekturę przez ustawienie wartości PublishReadyToRun na true, a następnie publikowanie pliku binarnego przez podanie prawidłowej wartości RuntimeIdentifier. Więcej informacji znajdziesz w ReadyToRunprzewodniku po wdrażaniu.
Używanie TieredCompilation
TieredCompilation (domyślnie włączone w nowoczesnych wersjach .NET, takich jak .NET 8) pozwala .NET identyfikować hotspoty i poprawiać wydajność środowiska wykonawczego. Kompilacja warstwowa dobrze współpracuje z ReadyToRun, ponieważ może używać wstępnie wygenerowanego obrazu do szybkiego uruchamiania, a następnie ponownie kompilować często używane metody z pełną optymalizacją.
Więcej informacji znajdziesz w TieredCompilationprzewodniku.
Dostosowywanie odśmiecania pamięci
Platforma .NET udostępnia 2 ogólne profile odśmiecania pamięci (GC): profil stacji roboczej i profil serwera. Te 2 profile mają różne kompromisy dotyczące wydajności. Aplikacje na serwerze dedykowanym korzystające z biblioteki Google Ads .NET często działają lepiej, gdy są uruchamiane w profilu serwera.
Możesz skorzystać z dostosowania tych ustawień GC:
Odśmiecanie pamięci po stronie serwera: Odśmiecanie pamięci po stronie serwera umożliwia środowisku wykonawczemu .NET zwiększenie przepustowości aplikacji interfejsu Google Ads API przez działanie na wielu stertach i wątkach odśmiecania pamięci. Więcej informacji znajdziesz w przewodniku po odśmiecaniu serwera. Aby włączyć odśmiecanie pamięci serwera, dodaj te wiersze do pliku
.csprojaplikacji:<PropertyGroup> <ServerGarbageCollection>true</ServerGarbageCollection> </PropertyGroup>Równoległe odśmiecanie pamięci: możesz włączyć równoległe odśmiecanie pamięci, aby przydzielić modułowi odśmiecania pamięci .NET dedykowany wątek do odśmiecania pamięci w generacji 2. To ustawienie może być przydatne podczas przetwarzania dużych raportów. Aby włączyć równoczesne odśmiecanie, dodaj te wiersze do pliku
.csprojaplikacji:<PropertyGroup> <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection> </PropertyGroup>Zachowaj odśmiecanie maszyny wirtualnej: ustawienie
RetainVMGarbageCollectionokreśla, czy segmenty pamięci wirtualnej, które powinny zostać usunięte, są umieszczane na liście rezerwowej do wykorzystania w przyszłości, czy też są zwalniane z powrotem do systemu operacyjnego. Aby włączyć utrzymywanie pamięci wirtualnej, dodaj te wiersze do pliku.csprojaplikacji:<PropertyGroup> <RetainVMGarbageCollection>true</RetainVMGarbageCollection> </PropertyGroup>
Możesz dostosować GC, wybierając konfigurację, która równoważy zachowanie stacji roboczej i serwera. Wszystkie odpowiednie ustawienia GC można określić w pliku runtimeconfig.json aplikacji .NET, za pomocą zmiennych środowiskowych lub w pliku App.config.