Biblioteka klienta .NET Google Ads upraszcza interakcje w Twojej aplikacji z interfejsem Google Ads API. Ogólna wydajność zależy jednak od sposobu używania biblioteki i integracji z aplikacją.
Ten przewodnik zawiera informacje o optymalizacji skuteczności aplikacji .NET i jest uzupełnieniem sprawdzonych metod dotyczących interfejsu Google Ads API.
Zawsze, gdy to możliwe, używaj GoogleAdsClient ponownie
GoogleAdsClient
reprezentuje sesję użytkownika podczas wykonywania wywołań interfejsu API. Oferuje optymalizacje, takie jak:
- Buforowanie kanałów gRPC używanych przez usługi interfejsu API. Skraca to czas konfiguracji podczas wstępnych wywołań interfejsu API.
- W miarę możliwości używaj ponownie tokenów dostępu. Zmniejsza to liczbę transferów 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 na poziomie menedżera.
- Jeśli masz token dostępu wystawiony na poziomie konta menedżera, możesz go używać do wywoływania interfejsu API dla wszystkich kont klientów Google Ads należących do tej hierarchii konta. W połączeniu z ponownym wykorzystaniem instancji
GoogleAdsClient
może to jeszcze zmniejszyć liczbę transferów w obie strony, które biblioteka klienta musi wykonywać, aby odświeżyć tokeny dostępu.
W miarę możliwości używaj wyszukiwarki SearchStream zamiast wyszukiwarki
GoogleAdsService.Search
może wysyłać wiele podzielonych na strony żądań pobrania całego raportu, a GoogleAdsService.SearchStream
wysyła 1 żądanie i inicjuje trwałe połączenie z interfejsem Google Ads API niezależnie od wielkości raportu. Wyeliminując czas przesyłania danych w obie strony wymagany do żądania każdej strony w odpowiedzi Search
(w zależności od aplikacji), SearchStream
może poprawić wydajność względem stronicowania. Więcej informacji na temat optymalizacji znajdziesz w sekcji Wyszukiwarka a SearchStream.
Ręczne zarządzanie odświeżaniem tokenów dostępu
W niektórych środowiskach, takich jak funkcje w Google Cloud Functions, ponowne używanie instancji GoogleAdsClient
może nie być możliwe. Takie środowiska mogą mieć własne sprawdzone metody
utrzymywania i ponownego wykorzystywania danych. W takich przypadkach możesz rozszerzyć klasę GoogleAdsConfig
na takie, które przeprowadzają własne odświeżanie tokenów dostępu.
// 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);
Kompilacja do kompilacji wersji
Pamiętaj, aby podczas wdrażania aplikacji na serwerze skompilować ją za pomocą konfiguracji wersji. W przypadku korzystania z konfiguracji debugowania aplikacja kompiluje się z pełnymi symbolicznymi informacjami debugowania bez optymalizacji.
Profilowanie aplikacji
Profiluj aplikację pod kątem wykorzystania procesora i pamięci, aby zidentyfikować słabe gardła wydajności. Visual Studio udostępnia narzędzia diagnostyczne, które ułatwiają profilowanie aplikacji. Dostępne są też inne komercyjne narzędzia do profilowania.
Używanie metod asynchronicznych
Programowanie asynchroniczne korzystające z paradygmatu asynchronicznego pomaga uniknąć wąskiego gardła wydajności i zwiększyć ogólną elastyczność aplikacji. Biblioteka .NET Google Ads generuje metody asynchroniczne dla wszystkich usług i metod RPC.
Jeśli to możliwe, wyłącz logowanie
Biblioteka .NET Google Ads domyślnie wyłącza logowanie i korzysta z leniwego logowania, co zwiększa wydajność aplikacji. Jeśli włączasz logowanie, pamiętaj, aby je wyłączyć w środowisku produkcyjnym. Jeśli musisz monitorować konkretne nieudane żądania w środowisku produkcyjnym, możesz wykonać co najmniej 1 z tych czynności bez negatywnego wpływu na wydajność aplikacji:
- Włącz tylko dzienniki podsumowania.
- Ustaw pełne logi na poziom:
ERROR
. - Zapisz identyfikatory konkretnych próśb, które możesz udostępniać kanałom pomocy.
Więcej informacji znajdziesz w przewodniku dotyczącym rejestrowania.
Wybór metody: SearchStream czy wyszukiwania
Interfejs Google Ads API udostępnia 2 główne sposoby pobierania obiektów: metodę Search
(korzystającą z podziału na strony) i SearchStream
(korzystającą z strumieniowego przesyłania danych).
Opcja SearchStream
zapewnia większą skuteczność w przypadku ponad Search
, ale są sytuacje, w których preferowana jest zasada Search
.
Więcej informacji o tych 2 metodach znajdziesz w przewodniku po raportach strumieniowanych.
Użyj opcji Gotowe do uruchomienia
.NET Core 3.1 umożliwia wstępne kompilowanie plików binarnych pod kątem określonej platformy i architektury. Aby to zrobić, określ ustawienie PublishReadyToRun
na true
, a następnie opublikuj plik binarny przez określenie prawidłowego atrybutu RuntimeIdentifier
podczas publikowania. Aby dowiedzieć się więcej, przeczytaj przewodnik po funkcji ReadyToRun
.
Użyj TieredCompilation
TieredCompilation
umożliwia .NET identyfikowanie hotspotów i zwiększenie jego 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 przewodniku po TieredCompilation
.
Dostosowywanie czyszczenia pamięci (GC)
.NET udostępnia 2 ogólne profile czyszczenia pamięci (GC): profil stacji roboczej i profil serwera. Te 2 profile mają różnice w stosunku do skuteczności. Aplikacje korzystające z biblioteki .NET Google Ads zwykle są skuteczniejsze, gdy działają w profilu serwera. Możesz skorzystać z dostrajania poniższych ustawień GC.
Czyszczenie pamięci serwera: funkcja czyszczenia serwera pozwala w czasie działania .NET na zapewnienie lepszej wydajności aplikacji korzystającej z interfejsu Google Ads API dzięki operacjom w wielu wątkach. Więcej informacji znajdziesz w tym przewodniku. Czyszczenie pamięci serwera możesz włączyć, dodając te wiersze do pliku
.csproj
aplikacji.<PropertyGroup> <ServerGarbageCollection>true</ServerGarbageCollection> </PropertyGroup>
Równoczesne odśmiecanie pamięci: możesz włączyć równoczesne czyszczenie pamięci, aby w 2 generacji utworzyć dla .NET GC specjalny wątek do czyszczenia pamięci. To ustawienie może być przydatne podczas przetwarzania raportów o dużych rozmiarach. Możesz włączyć równoczesne odśmiecanie, dodając następujące wiersze do pliku
.csproj
aplikacji.<PropertyGroup> <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection> </PropertyGroup>
Zachowaj czyszczenie pamięci maszyny wirtualnej: ustawienie
RetainVMGarbageCollection
określa, czy segmenty pamięci wirtualnej, które powinny zostać usunięte, mają być umieszczane na liście gotowości do wykorzystania w przyszłości, czy też są udostępniane z powrotem do systemu operacyjnego. Możesz włączyć przechowywanie pamięci wirtualnej, dodając do aplikacji te wiersze.<PropertyGroup> <RetainVMGarbageCollection>true</RetainVMGarbageCollection> </PropertyGroup>
Możesz dostosować GC, wybierając konfigurację łączącą stację roboczą z serwerem. Wszystkie odpowiednie ustawienia są określone w pliku runtimeconfig.json
aplikacji .NET Core, zmiennej środowiskowej lub App.config
aplikacji .NET SDK.