Anwendungsleistung

Die Google Ads .NET-Clientbibliothek vereinfacht die Interaktion Ihrer Anwendung mit der Google Ads API und erfordert nur eine minimale Konfiguration. Die Gesamtleistung hängt jedoch stark davon ab, wie die Bibliothek verwendet und in Ihre Anwendung integriert wird.

Dieser Leitfaden behandelt spezielle Leistungsoptimierungen für .NET-Anwendungen und ergänzt die Best Practices, die allgemein für die Google Ads API gelten.

Nach Möglichkeit GoogleAdsClient wiederverwenden

GoogleAdsClient steht für die Sitzung eines Nutzers bei API-Aufrufen. Sie bietet unter anderem folgende Optimierungen:

  • Caching der von API-Diensten verwendeten gRPC-Kanäle. Dadurch verkürzt sich die Einrichtungszeit bei ersten API-Aufrufen.
  • Nach Möglichkeit Zugriffstokens wiederverwenden So wird die Anzahl der Umläufe reduziert, die die Google Ads .NET-Clientbibliothek ausführen muss, um Zugriffstokens zu aktualisieren.

Nach Möglichkeit Zugriffstokens aus einem Verwaltungskonto verwenden

  • Wenn Sie ein Zugriffstoken auf Verwaltungskontoebene ausgestellt haben, können Sie damit API-Aufrufe für alle Google Ads-Kundenkonten in dieser Kontohierarchie ausführen. In Kombination mit der Wiederverwendung von GoogleAdsClient-Instanzen kann dies die Anzahl der Umläufe reduzieren, die die Clientbibliothek zum Aktualisieren von Zugriffstokens ausführen muss.

Nach Möglichkeit SearchStream anstelle von Search verwenden

Über GoogleAdsService.Search können mehrere paginierte Anfragen gesendet werden, um den gesamten Bericht herunterzuladen. Mit GoogleAdsService.SearchStream wird hingegen eine einzelne Anfrage gesendet und unabhängig von der Berichtsgröße eine dauerhafte Verbindung mit der Google Ads API hergestellt. Da die Umlauf-Netzwerkzeit, die zum Anfordern jeder einzelnen Seite einer Search-Antwort erforderlich ist, je nach Anwendung eliminiert wird, kann SearchStream die Leistung gegenüber dem Paging verbessern. Weitere Informationen zu dieser Optimierung finden Sie unter Suche im Vergleich zu SearchStream.

Aktualisierungen von Zugriffstokens manuell verwalten

In bestimmten Umgebungen wie Google Cloud Functions ist es möglicherweise nicht möglich, GoogleAdsClient-Instanzen wiederzuverwenden. Für solche Umgebungen können eigene Best Practices zur Beibehaltung und Wiederverwendung von Daten gelten. In solchen Fällen können Sie die Klasse GoogleAdsConfig erweitern, um eigene Aktualisierungen des Zugriffstokens durchzuführen. Gehen Sie dazu so vor:

// 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);

Für Release-Build kompilieren

Kompilieren Sie die Anwendung unbedingt mithilfe der Release-Konfiguration, wenn Sie sie auf dem Server bereitstellen. Bei Verwendung der Debug-Konfiguration wird Ihre Anwendung mit vollständigen symbolischen Debug-Informationen ohne Optimierung kompiliert.

App-Profil erstellen

Erstellen Sie ein Profil für die Anwendung im Hinblick auf die CPU- und Speichernutzung, um Leistungsengpässe zu erkennen. Visual Studio bietet Diagnosetools, mit denen Sie ein Profil für Ihre Anwendung erstellen können. Es gibt auch andere kommerzielle Tools zur Profilerstellung.

Asynchrone Methoden verwenden

Durch die asynchrone Programmierung mit dem Parameter „async-await“ lassen sich Leistungsengpässe vermeiden und die Reaktionsfähigkeit Ihrer Anwendung insgesamt verbessern. Die Google Ads .NET-Bibliothek generiert asynchrone Methoden für alle Dienste und RPC-Methoden.

Deaktiviere die Protokollierung, wann immer du kannst

Die Google Ads .NET-Bibliothek deaktiviert das Logging standardmäßig und verwendet ein verzögertes Logging, um die Leistung Ihrer Anwendung zu verbessern. Wenn Sie Logging aktivieren, muss es in der Produktionsumgebung deaktiviert werden. Wenn Sie bestimmte fehlerhafte Anfragen in der Produktion im Blick behalten möchten, können Sie einen oder mehrere der folgenden Schritte ausführen, ohne die Leistung Ihrer Anwendung zu beeinträchtigen:

  • Aktivieren Sie nur die Zusammenfassungslogs.
  • Legen Sie für die vollständigen Logs die Ebene ERROR fest.
  • Speichern Sie die Anfrage-ID für bestimmte Anfragen, die Sie an die Supportkanäle senden können.

Weitere Informationen finden Sie im Logging-Leitfaden.

Entscheiden Sie, ob Sie die Methode SearchStream oder Search verwenden möchten.

Die Google Ads API bietet im Wesentlichen zwei Möglichkeiten zum Abrufen von Objekten: die Search-Methode (mit Seitenumbruch) und SearchStream (mit Streaming).

SearchStream bietet im Vergleich zu Search eine bessere Leistung, aber in bestimmten Szenarien ist Search bevorzugt.

Weitere Informationen zu den beiden Methoden finden Sie im Leitfaden zu Streamingberichten.

„ReadyToRun“-Option verwenden

.NET Core 3.1 unterstützt jetzt das Vorkompilieren Ihrer Binärdateien auf einer bestimmten Plattform und Architektur. Dazu legen Sie als PublishReadyToRun-Einstellung true fest und veröffentlichen das Binärprogramm, indem Sie beim Veröffentlichen eine gültige RuntimeIdentifier angeben. Weitere Informationen finden Sie im Leitfaden zur Funktion ReadyToRun.

TieredCompilation verwenden

Mit TieredCompilation kann .NET Hotspots identifizieren und die Leistung verbessern. Die gestaffelte Kompilierung funktioniert besser mit der Option ReadyToRun, da sie das vorgenerierte Image verwenden kann, sofern verfügbar. Weitere Informationen finden Sie im Leitfaden zu TieredCompilation.

Automatische Speicherbereinigung optimieren

.NET bietet zwei allgemeine Profile für die automatische Speicherbereinigung (GC): ein Workstation-Profil und ein Serverprofil. Diese beiden Profile haben unterschiedliche Leistungsunterschiede. Anwendungen, für die die Google Ads .NET-Bibliothek verwendet wird, funktionieren in der Regel besser, wenn sie in einem Serverprofil ausgeführt werden. Sie können die folgenden Einstellungen für die automatische Speicherbereinigung optimieren.

  • automatische Serverbereinigung:Durch die automatische Speicherbereinigung für Server kann die Leistung einer Google Ads API-Anwendung in der .NET-Laufzeit verbessert werden, da sie in mehreren Threads ausgeführt wird. Weitere Informationen finden Sie in diesem Leitfaden. Sie können die automatische Speicherbereinigung für den Server aktivieren, indem Sie der Datei .csproj Ihrer Anwendung die folgenden Zeilen hinzufügen.

    <PropertyGroup>
      <ServerGarbageCollection>true</ServerGarbageCollection>
    </PropertyGroup>
    
  • Gleichzeitige automatische Speicherbereinigung:Sie können die gleichzeitige automatische Speicherbereinigung aktivieren, um .NET GC einen dedizierten Thread für die automatische Speicherbereinigung in der 2. Generation zuzuweisen. Diese Einstellung kann bei der Verarbeitung von Berichten mit großen Datenmengen nützlich sein. Sie können die gleichzeitige automatische Speicherbereinigung aktivieren, indem Sie der Datei .csproj Ihrer Anwendung die folgenden Zeilen hinzufügen.

    <PropertyGroup>
      <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection>
    </PropertyGroup>
    
  • Automatische Speicherbereinigung für VM beibehalten: Mit der Einstellung RetainVMGarbageCollection legen Sie fest, ob Segmente des virtuellen Arbeitsspeichers, die gelöscht werden sollen, zur zukünftigen Verwendung in eine Standby-Liste gesetzt oder wieder für das Betriebssystem freigegeben werden. Sie können die Aufbewahrung des virtuellen Arbeitsspeichers aktivieren, indem Sie Ihrer Anwendung die folgenden Zeilen hinzufügen.

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

Sie können die automatische Speicherbereinigung optimieren, indem Sie sich für eine Einrichtung zwischen einer Workstation und einem Server entscheiden. Alle relevanten Einstellungen werden in der Datei runtimeconfig.json Ihrer .NET Core-App, einer Umgebungsvariable oder der App.config Ihrer .NET SDK-App angegeben.