A biblioteca cliente .NET do Google Ads simplifica as interações do seu aplicativo com a Google Ads API com o mínimo de configuração. No entanto, o desempenho geral depende muito de como a biblioteca é usada e integrada ao app.
Este guia aborda otimizações de desempenho específicas de aplicativos .NET e complementa as práticas recomendadas que geralmente são aplicáveis à API Google Ads.
Reutilize o GoogleAdsClient sempre que possível
GoogleAdsClient
representa a sessão de um usuário ao fazer chamadas de API. Ela fornece
otimizações como:
- Armazenar em cache os canais gRPC usados pelos serviços da API. Isso reduz o tempo de configuração durante as chamadas iniciais de API.
- Reutilizar tokens de acesso quando possível Isso reduz o número de idas e voltas que a biblioteca cliente do Google Ads .NET precisa realizar para atualizar os tokens de acesso.
Use tokens de acesso de uma conta de administrador quando possível
- Se você tiver um token de acesso emitido no nível da conta de administrador, poderá usá-lo para fazer chamadas de API em todas as contas de clientes do Google Ads nessa hierarquia. Quando combinado com a reutilização de instâncias de
GoogleAdsClient
, pode reduzir ainda mais o número de idas e voltas que a biblioteca de cliente precisa realizar para atualizar os tokens de acesso.
Use SearchStream em vez de pesquisa sempre que possível
Embora a GoogleAdsService.Search
possa enviar várias solicitações paginadas para fazer o download do relatório inteiro, a GoogleAdsService.SearchStream
envia uma única solicitação e inicia uma conexão permanente com a API Google Ads, independentemente do tamanho do relatório. Ao eliminar o tempo de ida e volta
necessário para solicitar cada página de uma resposta Search
, dependendo do
seu app, o SearchStream
pode oferecer melhor desempenho em relação à paginação. Consulte
Pesquisa x
SearchStream para saber
mais sobre essa otimização.
Gerenciar manualmente as atualizações do token de acesso
Em determinados ambientes, como o Google Cloud
Functions, pode não ser viável reutilizar
instâncias de GoogleAdsClient
. Esses ambientes podem ter as próprias práticas recomendadas
para persistir e reutilizar dados. Nesses casos, você pode estender a
classe GoogleAdsConfig
para executar suas próprias atualizações de token de acesso, conforme mostrado a seguir.
// 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);
Compilar para build de lançamento
Compile seu app usando a Configuração de versão ao implantar no servidor. Ao usar a configuração de depuração, o app é compilado com informações de depuração simbólicas completas e sem otimização.
Gerar um perfil do seu app
Crie um perfil do app para uso de CPU e memória a fim de identificar gargalos de desempenho. O Visual Studio fornece ferramentas de diagnóstico para ajudar a criar o perfil do app. Há também outras ferramentas de criação de perfil comerciais disponíveis.
Usar métodos assíncronos
A programação assíncrona com o paradigma async-await ajuda a evitar gargalos de desempenho e melhorar a capacidade de resposta geral do seu app. A biblioteca .NET do Google Ads gera métodos assíncronos para todos os serviços e métodos RPC.
Desative a geração de registros quando possível
A biblioteca .NET do Google Ads desativa a geração de registros por padrão e usa uma abordagem de geração de registros lenta, que melhora o desempenho do app. Se você ativar a geração de registros, desative-a no ambiente de produção. Se você precisar monitorar solicitações específicas com falha na produção, poderá seguir uma ou mais das seguintes etapas sem afetar negativamente o desempenho do app:
- Ative apenas os registros de resumo.
- Defina os registros completos para o nível
ERROR
. - Salve o ID das solicitações específicas de interesse que você pode compartilhar com os canais de suporte.
Consulte o guia de geração de registros para saber mais.
Decida se quer usar o método SearchStream ou Search
A API Google Ads fornece duas maneiras principais de recuperar objetos: o método Search
, que usa paginação, e SearchStream
, que usa streaming.
SearchStream
fornece um desempenho melhor do que Search
, mas há
cenários em que Search
é preferível.
Consulte o guia de relatórios de streaming para saber mais sobre os dois métodos.
Usar a opção ReadyToRun
O .NET Core 3.1 adiciona suporte à pré-compilação de binários em uma plataforma e arquitetura
específicas especificando uma configuração PublishReadyToRun
como true
e
publicando o binário especificando um RuntimeIdentifier
válido ao
publicar. Consulte o guia sobre o recurso
ReadyToRun
para saber
mais.
Usar TieredCompilation
TieredCompilation
permite que o .NET identifique pontos de acesso e melhore o desempenho. A compilação em camadas funciona melhor com a opção ReadyToRun
, já que
ela pode usar a imagem pré-gerada quando disponível. Consulte o guia sobre
TieredCompilation
para saber mais.
Ajustar sua coleta de lixo (GC)
O .NET fornece dois perfis gerais para coleta de lixo (GC, na sigla em inglês): um perfil de estação de trabalho e um de servidor. Esses dois perfis têm desvantagens de desempenho diferentes. Os aplicativos que usam a biblioteca .NET do Google Ads tendem a ter um desempenho melhor quando executados em um perfil de servidor. Você pode se beneficiar do ajuste das seguintes configurações de GC.
Coleta de lixo do servidor:a coleta de lixo do servidor permite que o ambiente de execução do .NET ofereça melhor desempenho a um app da Google Ads API operando em várias linhas. Consulte este guia para mais detalhes. Ative a coleta de lixo do servidor adicionando as seguintes linhas ao arquivo
.csproj
do seu app.<PropertyGroup> <ServerGarbageCollection>true</ServerGarbageCollection> </PropertyGroup>
Coleta de lixo simultânea:é possível ativar a coleta de lixo simultânea para dar à GC do .NET uma linha de execução dedicada à coleta de lixo na segunda geração. Essa configuração pode ser útil ao processar relatórios com tamanhos grandes. É possível ativar a coleta de lixo simultânea adicionando as seguintes linhas ao arquivo
.csproj
do app.<PropertyGroup> <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection> </PropertyGroup>
Reter a coleta de lixo da VM: a configuração
RetainVMGarbageCollection
define se os segmentos da memória virtual que precisam ser excluídos serão colocados em uma lista de espera para uso futuro ou liberados para o sistema operacional (SO). Ative a retenção de memória virtual adicionando as seguintes linhas ao seu app.<PropertyGroup> <RetainVMGarbageCollection>true</RetainVMGarbageCollection> </PropertyGroup>
Você pode ajustar sua GC definindo uma configuração entre
uma estação de trabalho e um servidor. Todas as configurações
relevantes
são especificadas no arquivo runtimeconfig.json
do seu app .NET Core, em uma variável
de ambiente ou no App.config
do app do SDK .NET.