Biblioteka klienta Google Ads .NET upraszcza interakcje aplikacji z interfejsem Google Ads API przy minimalnej konfiguracji. Ogólna wydajność zależy jednak w dużej mierze od tego, jak biblioteka jest używana i zintegrowana z aplikacją.
W tym przewodniku opisujemy optymalizacje wydajności, które są specyficzne dla aplikacji .NET, i uzupełniamy sprawdzone metody, które mają zastosowanie do interfejsu Google Ads API.
W miarę możliwości używaj GoogleAdsClient
GoogleAdsClient reprezentuje sesję użytkownika podczas wywoływania interfejsu API. Umożliwia między innymi te optymalizacje:
- 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 ponowne używanie tokenów dostępu. Zmniejsza to liczbę podróży w obie strony, 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 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
GoogleAdsClientmoże to dodatkowo zmniejszyć liczbę podróży w obie strony, które biblioteka klienta musi wykonać, aby odświeżyć tokeny dostępu.
W miarę możliwości używaj SearchStream zamiast Search
Chociaż GoogleAdsService.Search może
wysyłać wiele żądań podzielonych na strony, aby pobrać cały raport,
GoogleAdsService.SearchStream
wysyła jedno żądanie i inicjuje trwałe połączenie z interfejsem Google Ads API
niezależnie od rozmiaru raportu. Eliminując czas podróży w obie strony sieci
wymagany do żądania każdej strony odpowiedzi Search, w zależności od
aplikacji, SearchStream może oferować lepszą wydajność niż stronicowanie. Więcej informacji o tej optymalizacji znajdziesz w artykule
Search a
SearchStream.
Ręczne zarządzanie odświeżaniem tokenów dostępu
W niektórych środowiskach, np. w Google Cloud
Functions, ponowne używanie
GoogleAdsClient instancji może być niemożliwe. Takie środowiska mogą mieć własne sprawdzone metody utrwalania i ponownego używania danych. W takich przypadkach 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 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);
Kompilowanie na potrzeby kompilacji do publikacji
Podczas wdrażania na serwerze upewnij się, że kompilujesz aplikację za pomocą konfiguracji Release. W przypadku konfiguracji Debug aplikacja jest kompilowana z pełnymi informacjami o debugowaniu symbolicznym i bez optymalizacji.
Profilowanie aplikacji
Profiluj aplikację pod kątem wykorzystania procesora i pamięci, aby zidentyfikować 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
Anulowanie metod asynchronicznych
Za pomocą parametru callSettings możesz przekazać
CancellationToken
do metod asynchronicznych:
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);
googleAdsService.SearchStream(request,
delegate (SearchGoogleAdsStreamResponse resp)
{
foreach (GoogleAdsRow googleAdsRow in resp.Results)
{
// Process the row.
}
}, callSettings
);
Wyłączanie rejestrowania
Biblioteka Google Ads .NET domyślnie wyłącza rejestrowanie i używa podejścia leniwego rejestrowania, co zwiększa wydajność aplikacji. Jeśli włączysz rejestrowanie, pamiętaj, aby wyłączyć je w środowisku produkcyjnym. Jeśli musisz monitorować konkretne żądania, które nie powiodły się w środowisku produkcyjnym, możesz wykonać co najmniej jeden z tych kroków bez negatywnego wpływu na wydajność aplikacji:
- Włącz tylko dzienniki podsumowania.
- Ustaw poziom pełnych dzienników na
ERROR. - Zapisz identyfikator żądania w przypadku konkretnych żądań, które Cię interesują, aby móc je udostępnić w kanałach pomocy.
Więcej informacji znajdziesz w przewodniku dotyczącym rejestrowania.
Decydowanie, czy używać metody SearchStream czy Search
Interfejs Google Ads API udostępnia 2 główne sposoby pobierania obiektów: metodę Search
(która używa stronicowania) i SearchStream (która używa strumieniowania).
SearchStream zapewnia lepszą wydajność niż Search, ale w niektórych
przypadkach preferowana jest metoda Search.
Więcej informacji o tych 2 metodach znajdziesz w przewodniku dotyczącym raportów strumieniowych.
Używanie opcji ReadyToRun
.NET Core 3.1 dodaje obsługę wstępnego kompilowania plików binarnych na konkretną platformę i architekturę przez ustawienie PublishReadyToRun na true, a następnie opublikowanie pliku binarnego przez podanie prawidłowego RuntimeIdentifier podczas publikowania. Więcej informacji znajdziesz w przewodniku dotyczącym funkcji ReadyToRun.
Używanie TieredCompilation
TieredCompilation umożliwia .NET identyfikowanie hotspotów i zwiększanie wydajności. Kompilacja warstwowa działa lepiej z opcją ReadyToRun, ponieważ może używać wstępnie wygenerowanego obrazu, gdy jest on dostępny. Więcej informacji znajdziesz w guide on
TieredCompilation.
Dostrajanie odśmiecania pamięci
.NET udostępnia 2 ogólne profile odśmiecania pamięci: profil stacji roboczej i profil serwera. Te 2 profile mają różne kompromisy dotyczące wydajności. Aplikacje korzystające z biblioteki Google Ads .NET zwykle działają lepiej w profilu serwera. Możesz skorzystać z dostrajania tych ustawień odśmiecania pamięci.
Odśmiecanie pamięci na serwerze: odśmiecanie pamięci na serwerze umożliwia środowisku wykonawczemu .NET zwiększenie wydajności aplikacji interfejsu Google Ads API przez działanie na wielu wątkach. Więcej informacji znajdziesz w tym przewodniku. Aby włączyć odśmiecanie pamięci na serwerze, dodaj te wiersze do pliku
.csprojaplikacji.<PropertyGroup> <ServerGarbageCollection>true</ServerGarbageCollection> </PropertyGroup>Równoczesne odśmiecanie pamięci: możesz włączyć równoczesne odśmiecanie pamięci , aby .NET GC miał dedykowany wątek do odśmiecania pamięci w generacji 2. To ustawienie może być przydatne podczas przetwarzania raportów o dużych rozmiarach. Aby włączyć równoczesne odśmiecanie pamięci, dodaj te wiersze do pliku
.csprojaplikacji.<PropertyGroup> <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection> </PropertyGroup>Zachowywanie odśmiecania pamięci maszyny wirtualnej: ustawienie
RetainVMGarbageCollectionokreśla, czy segmenty pamięci wirtualnej, które mają zostać usunięte, mają być umieszczane na liście rezerwowej do wykorzystania w przyszłości, czy też mają być zwalniane z powrotem do systemu operacyjnego. Aby włączyć zachowywanie pamięci wirtualnej, dodaj te wiersze do aplikacji.<PropertyGroup> <RetainVMGarbageCollection>true</RetainVMGarbageCollection> </PropertyGroup>
Możesz dostroić odśmiecanie pamięci, wybierając konfigurację, która znajduje się między stacją roboczą a serwerem. Wszystkie odpowiednie ustawienia
są określone w pliku runtimeconfig.json aplikacji .NET Core, zmiennej środowiskowej
lub pliku App.config aplikacji .NET SDK.