Wydajność aplikacji

Biblioteka klienta .NET Google Ads upraszcza interakcje z aplikacją Interfejs Google Ads API, który wymaga minimalnej konfiguracji. Jednakże ogólny zależy od tego, jak biblioteka jest używana i zintegrowana .

W tym przewodniku omawiamy optymalizacje wydajności w aplikacjach .NET, uzupełnia najlepsze praktyk, które mają zastosowanie interfejsu Google Ads API.

O ile to możliwe, należy ponownie korzystać z GoogleAdsClient

GoogleAdsClient reprezentuje sesję użytkownika podczas wykonywania wywołań interfejsu API. Zapewnia optymalizacje, takie jak:

  • Buforowanie kanałów gRPC używane przez usługi API. Skraca to czas konfiguracji podczas tworzenia początkowego interfejsu API połączeń.
  • W miarę możliwości ponowne korzystanie z tokenów dostępu. Zmniejsza to liczbę lotów w obie strony które musi wykonać biblioteka klienta .NET Google Ads, 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żyć aby wywoływać interfejs API na wszystkich kontach klientów Google Ads w ramach tego konta w hierarchii. W połączeniu z ponownym wykorzystaniem GoogleAdsClient instancji może to spowodować jeszcze bardziej zmniejszyć liczbę lotów w obie strony, które musi wykonać biblioteka klienta, odśwież tokeny dostępu.

W miarę możliwości używaj SearchStream zamiast wyszukiwarki

GoogleAdsService.Search może wyślij wiele żądań z podziałem na strony, aby pobrać cały raport, GoogleAdsService.SearchStream wysyła jedno żądanie i inicjuje trwałe połączenie z interfejsem Google Ads API; bez względu na rozmiar raportu. Przez wyeliminowanie czasu przesyłania danych w obie strony wymagane do żądania poszczególnych stron odpowiedzi Search w zależności od Twojej aplikacji, SearchStream może oferować wyższą wydajność w porównaniu z stronicowaniem. Zobacz Sieć wyszukiwania a SearchStream, aby dowiedzieć się więcej więcej o tej optymalizacji.

Ręczne zarządzanie odświeżaniem tokenów dostępu

W niektórych środowiskach, takich jak Google Cloud funkcji, ponowne wykorzystanie może nie być możliwe. GoogleAdsClient instancji. Takie środowiska mogą dawać swoje możliwości z myślą o trwałości i wykorzystywaniu danych. W takich przypadkach możesz przedłużyć GoogleAdsConfig, aby wykonać własne odświeżanie tokena dostępu w następujący 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);

Kompiluj na potrzeby kompilacji wersji

Pamiętaj, aby skompilować aplikację za pomocą atrybutu Wersja podczas wdrażania na serwerze. Jeśli korzystasz z konfiguracji debugowania, Twoja aplikacja kompiluje się z pełnymi symbolicznymi informacjami dotyczącymi debugowania, bez optymalizacji.

Profilowanie aplikacji

Profiluj aplikację pod kątem wykorzystania procesora i pamięci, aby określić jej wydajność które powodują wąskie gardła. Visual Studio zapewnia Narzędzia diagnostyczne aby ułatwić jej profilowanie. Występują również inne profilowanie komercyjne. narzędzia które są dostępne.

Używanie metod asynchronicznych

Programowanie asynchroniczne z wykorzystaniem funkcji async-await model pomaga uniknąć wąskich gardeł wydajności i poprawia ogólną szybkość reagowania do aplikacji. Biblioteka .NET Google Ads generuje metody asynchroniczne dla wszystkich usług i metod RPC.

Anulowanie metod asynchronicznych

Za pomocą parametru callSettings możesz przekazywać CancellationToken. na metody asynchroniczne:

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.V17.GoogleAdsService);

googleAdsService.SearchStream(request,
    delegate (SearchGoogleAdsStreamResponse resp)
    {
        foreach (GoogleAdsRow googleAdsRow in resp.Results)
        {
            // Process the row.
        }
    }, callSettings
);

Wyłącz rejestrowanie, gdy to możliwe

Biblioteka .NET Google Ads domyślnie wyłącza logowanie i używa leniwego rejestrowania które zapewnia większą wydajność aplikacji. Jeśli włączysz zapisywanie, sprawdź, czy jest ona wyłączona w środowisku produkcyjnym. Jeśli chcesz monitorować w przypadku konkretnych nieudanych żądań w środowisku produkcyjnym, możesz wykonać jedną lub więcej wykonać te czynności bez negatywnego wpływu na wydajność aplikacji:

  • Włącz tylko dzienniki podsumowania.
  • Ustaw pełne logi na poziom ERROR.
  • Zapisywanie identyfikatorów konkretnych próśb, które możesz udostępniać kontaktując się z kanałami pomocy.

Więcej informacji znajdziesz w przewodniku dotyczącym logowania.

Zdecyduj, czy chcesz użyć metody SearchStream czy Search

Interfejs Google Ads API udostępnia 2 główne sposoby pobierania obiektów: metodę Search (który korzysta z podziału na strony) i SearchStream (który obsługuje strumieniowanie).

SearchStream zapewnia większą skuteczność w porównaniu z grupą Search, ale w sytuacjach, w których preferowana jest wartość Search.

Więcej informacji znajdziesz w przewodniku po raportach strumieniowych. na temat obu metod.

Użyj opcji ReadyToRun

.NET Core 3.1 dodaje obsługę wstępnego kompilowania plików binarnych na określonej platformie i architekturę, określając ustawienie PublishReadyToRun na true oraz opublikuj plik binarny, określając prawidłową wartość RuntimeIdentifier, gdy do publikacji. Zobacz przewodnik na stronie ReadyToRun funkcję, aby dowiedzieć się więcej. i innych.

Użyj TieredCompilation

TieredCompilation pozwala .NET rozpoznawać hotspoty i ulepszać skuteczność reklam. Kompilacja wielopoziomowa działa lepiej z opcją ReadyToRun, ponieważ może użyć wygenerowanego obrazu, jeśli jest dostępny. Zobacz przewodnik na temat: TieredCompilation aby dowiedzieć się więcej.

Dostosowywanie procesu czyszczenia pamięci

.NET udostępnia 2 ogólne profile do czyszczenia pamięci: stacja robocza i profilu serwera. Te dwa profile mają różną skuteczność . Aplikacje korzystające z biblioteki .NET Google Ads mają zwykle większą skuteczność w profilu serwera. Możesz skorzystać z dostosowania podanych niżej ustawień GC.

  • Czyszczenie pamięci serwera: usuwanie czyszczenia pamięci serwera zezwala na .NET środowiska wykonawczego, aby zwiększyć skuteczność aplikacji z interfejsem Google Ads API. działające w wielu wątkach. Zobacz to przewodnik . Aby włączyć czyszczenie pamięci serwera, dodaj parametr następujące wiersze do pliku .csproj aplikacji.

    <PropertyGroup>
      <ServerGarbageCollection>true</ServerGarbageCollection>
    </PropertyGroup>
    
  • Równoczesne usuwanie czyszczenia danych: możesz włączyć równoczesne usuwanie usuwanie czyszczenia pamięci , aby utworzyć w .NET GC specjalny wątek do czyszczenia pamięci w 2 generacji. To ustawienie może być przydatne podczas przetwarzania raportów o dużych rozmiarach. Dostępne opcje włącz równoczesne usuwanie odpadów, dodając te wiersze do .csproj aplikacji.

    <PropertyGroup>
      <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection>
    </PropertyGroup>
    
  • Zatrzymywanie czyszczenia pamięci maszyn wirtualnych: RetainVMGarbageCollection ustawienie określa, czy segmenty pamięci wirtualnej, które należy usunąć, są umieszczane zostały umieszczone na liście gotowości do użycia w przyszłości lub są zwracane do systemu operacyjnego system operacyjny. Przechowywanie pamięci wirtualnej możesz włączyć, dodając do aplikacji.

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

Możesz dostosować GC, wybierając konfigurację pomiędzy stacji roboczej i serwera. Wszystkie odpowiednie ustawienia są określone w pliku runtimeconfig.json aplikacji .NET Core, środowisku lub App.config aplikacji pakietu .NET SDK.