Como gerenciar recursos do app

O App Engine gera relatórios de uso sobre o desempenho do aplicativo e a utilização de recursos. Abaixo estão listadas as estratégias em potencial para gerenciar os recursos com mais eficiência. Para mais informações, consulte a página de preços.

Como ver relatórios de uso

Ao avaliar o desempenho do aplicativo, você precisa verificar o número de instâncias em que o aplicativo está em execução e como ele consome recursos.

Ver os relatórios de uso do painel

Ver a página Instâncias

Nas seções a seguir, você verá algumas estratégias para gerenciar recursos.

Como gerenciar o escalonamento dinâmico de instância

Como diminuir a latência

A latência do aplicativo afeta o número de instâncias necessárias para processar o tráfego. Ao diminuir a latência, é possível reduzir o número de instâncias usadas para exibir o aplicativo. O Cloud Trace é uma ferramenta útil para visualizar dados sobre latência e entender possíveis alterações para diminuí-la.

Depois de usar o Cloud Trace para ver a latência, execute algumas das seguintes estratégias para reduzir a latência:

  • Aumente o armazenamento em cache de dados compartilhados e frequentemente acessados: ou seja, use o Memcache do App Engine. Além disso, definir cabeçalhos de controle de cache do aplicativo pode impactar a eficiência com que os dados são armazenados em cache pelos servidores e navegadores. O armazenamento de dados em cache, mesmo que seja feito por alguns segundos, pode afetar a eficiência da veiculação do tráfego pelo aplicativo.
  • Usar o Memcache do App Engine de maneira mais eficiente: use chamadas em lote para as operações get, set, delete etc, em vez de uma série de chamadas individuais.
  • Usar tarefas para um recurso não vinculado a uma solicitação: se o aplicativo executar um trabalho que possa ser feito além do escopo de uma solicitação voltada para o usuário, coloque-o em uma tarefa. Se você enviar esse trabalho para a fila de tarefas em vez de aguardar a conclusão dele antes do retorno de uma resposta, será possível reduzir significativamente a latência do usuário. Assim, a fila de tarefas oferece muito mais controle sobre as taxas de execução e ajuda a reduzir a carga.
  • Use o Firestore no modo Datastore (Datastore) com mais eficiência: consulte abaixo mais detalhes.
  • Execute várias chamadas de busca de URL em paralelo:
    • Reúna em lote várias chamadas de busca de URL, em vez de lidar com cada uma em solicitações individuais voltadas para o usuário, e processe-as em uma tarefa off-line em paralelo por meio da busca de URL assíncrona.
  • Para sessões HTTP, grave de forma assíncrona.

Alterar configurações de desempenho do escalonamento automático

O arquivo de configuração app.yaml contém várias definições que você pode usar para ajustar a compensação entre desempenho e carga de recursos para uma versão específica do aplicativo. Para uma lista das configurações de escalonamento automático disponíveis, consulte os elementos de escalonamento. Assista ao vídeo Novas configurações do programador (em inglês) do App Engine para ver os efeitos dessas configurações.

Como definir configurações da fila de tarefas

As configurações padrão de fila de tarefas são ajustadas visando o desempenho. Com esses padrões, quando você coloca várias tarefas em uma fila simultaneamente, é provável que novas instâncias de front-end sejam iniciadas. Veja algumas sugestões para o ajuste da fila de tarefas que visam preservar as horas da instância:

  • Defina o cabeçalho X-AppEngine-FailFast nas tarefas que não sejam sensíveis à latência. Esse cabeçalho instrui o programador a cancelar imediatamente a solicitação se uma instância não estiver disponível. A fila de tarefas tentará novamente e recuará até que uma instância fique disponível para atender à solicitação. No entanto, é importante observar que, quando as solicitações com o conjunto X-AppEngine-FailFast ocupam instâncias, ainda será possível que as solicitações sem esse conjunto de cabeçalho causem a inicialização de novas instâncias.

Exibir conteúdo estático sempre que possível

A disponibilização de conteúdo estático é processada pela infraestrutura especializada do Google App Engine, que não consome horas da instância.

Como gerenciar o armazenamento de aplicativos

O App Engine calcula os custos de armazenamento com base no tamanho das entidades no Datastore, no tamanho dos índices do armazenamento de dados, no tamanho das tarefas na fila de tarefas e no volume de dados armazenados no Blobstore. Execute estes procedimentos para não armazenar mais dados do que o necessário:

  • Exclua todas as entidades ou os blobs de que o aplicativo não precisa mais.
  • Remova todos os índices desnecessários, conforme abordado na seção Como gerenciar o uso do Datastore abaixo, para reduzir os custos de armazenamento do índices.

Como gerenciar o uso do Datastore

O App Engine é responsável pelo número de operações realizadas no Datastore. Estas são algumas das estratégias capazes de reduzir o consumo de recursos do Datastore, além de diminuir a latência em solicitações para o Datastore:

  • O visualizador de dados do Console mostra o número de operações de gravação que foram necessárias para criar cada entidade no Datastore local. Use essas informações para compreender o custo da gravação de cada entidade. Consulte Noções básicas sobre os custos de gravação para saber mais sobre como interpretar esses dados.
  • Remova qualquer índice desnecessário. Isso reduzirá os custos de armazenamento e gravação da entidade. É possível ver quais índices são veiculados atualmente para o aplicativo na página de Pesquisa do console.
  • Ao projetar o modelo de dados, grave as consultas de modo a evitar índices personalizados. Leia a documentação sobre Consultas e índices para saber mais sobre como o App Engine gera índices.
  • Sempre que possível, substitua as propriedades indexadas (que são o padrão) por propriedades não indexadas, que reduz o número de operações de gravação do Datastore quando você coloca uma entidade. Cuidado: se mais tarde você decidir que precisa realizar consultas na propriedade não indexada, além de modificar o código para voltar a usar as propriedades indexadas, precisará também executar uma redução de mapa em todas as entidades para inclui-las novamente.
  • Devido às melhorias no planejador de consultas do Datastore nas versões 1.5.2 e 1.5.3 do App Engine, as consultas agora exigem menos índices do que antes. Embora ainda seja possível manter certos índices personalizados por motivos de desempenho, é possível excluir outros para reduzir custos de armazenamento e gravação de entidades.
  • Use consultas apenas por chaves em vez de consultas de entidade, quando possível.
  • Para diminuir a latência, substitua os get()s de várias entidades por um get() em lote.
  • Use os cursores do Datastore para paginação em vez de deslocamento.

Observação: pequenas operações do Datastore incluem chamadas para alocar IDs do Datastore ou consultas apenas por chaves. Consulte a página de preços para mais informações sobre custos.

Como gerenciar outros recursos

É sempre uma boa ideia conferir as taxas de erro e se você está realizando chamadas inválidas. Em alguns casos, é possível detectar essas chamadas com antecedência.