Tratamento simultâneo de solicitações no Google App Engine

Eu estava experimentando o processamento simultâneo de solicitações em poucas plataformas.

O objetivo do experimento era ter umamplo medida dos limites de capacidade de algumas tecnologias selecionadas.

Configurei uma VM Linux na minha máquina com um servidor http Go básico (ohttp.HandleFunc dohttp pacote padrão). O servidor computaria uma versão modificada dofasta algoritmo que restringiu threads e processos a 1 e retornou o resultado. N foi definido como 100000. O algoritmo é executado em aproximadamente 2 segundos. Eu usei omesmo algoritmo e lógica em um projeto do Google App Engine.

O algoritmo é escrito usando o mesmo código, apenas a configuração do manipulador é feita eminit() ao invés demain() conforme os requisitos do GAE.

Por outro lado, um cliente Android gera 500 threads cada um emitindo em paralelo umGET pedido aofasta servidor de computação, com um tempo limite de solicitação de 5000 ms.

Eu esperava que o aplicativo GAE fosse dimensionado e respondesse a cada solicitação, e o servidor Go local falharia em algumas das 500 solicitações, mas os resultados foram o oposto: o servidor local respondeu corretamente a cada solicitação dentro dos limites de tempo limite enquanto o aplicativo GAE estava capaz de lidar com apenas 160 solicitações em 500. As solicitações restantes expiraram.

Eu verifiquei no Cloud Console e verifiquei que 18 instâncias do GAE foram geradas, mas ainda assim a grande maioria das solicitações falhou.

Eu pensei que a maioria deles falhou devido ao tempo de inicialização de cada instância do GAE, então repeti o experimento logo após, mas tive os mesmos resultados: a maioria das solicitações expirou.

Eu esperava que o GAE fosse dimensionado para acomodar TODAS as solicitações, acreditando que se uma única VM local pudesse responder com êxito a 500 solicitações simultâneas, o GAE teria feito o mesmo, mas não foi isso que aconteceu.

O console do GAE não mostra nenhum erro e relata corretamente o número de solicitações recebidas.

Qual poderia ser a causa disso? Além disso, se uma única instância pudesse lidar com todas as solicitações recebidas na minha máquina em virtude apenas de goroutines, como o GAE precisava escalar tanto?

questionAnswers(3)

yourAnswerToTheQuestion