Como você determina um tempo de resposta aceitável para solicitações de db de mecanismo de aplicativo?

StackOverflow https://stackoverflow.com/questions/2602527

Pergunta

De acordo com Esta discussão do Google App Engine no Hacker News,

Uma solicitação de db (leitura) leva mais de 100ms no armazenamento de dados. Isso é insano e inutilizável para cerca de 90% das aplicações.

Como você determina o que é um tempo de resposta aceitável para uma solicitação de leitura de dB?

Eu tenho usado o App Engine sem perceber nenhum problema com a capacidade de resposta do banco de dados. Mas, por outro lado, não tenho certeza se saberia o que procurar nesse sentido :)

Foi útil?

Solução

O pôster está errado. O DataStore Get Operations é muito mais rápido - cerca de 15 a 20ms cada, atualmente. Banco de dados consulta As operações podem ser mais lentas, porque estão muito mais envolvidas e retornam mais dados, mas ainda são concluídos em 30 a 100 ms para uma consulta típica. Outros pôsteres abordaram amplamente se isso é "aceitável" ou não.

Outras dicas

Você pode medir com precisão o quanto cada chamada de RPC (DataStore ou não) está levando, graças ao Guido Van Rossum's AppStats Componente relativamente novo (faz parte do SDK padrão desde 1.3.1). Ver aqui para mais. 100 milissegundos é bom para os aplicativos mais bem projetados-se você precisar fazer duas ou três consultas para servir uma página, você ainda pode servir em menos de meio segundos, mesmo que haja muito processamento e renderização envolvidos ... não muito gasto. Além disso, você pode usar memcache Para reduzir muitas dessas latências, etc.

O que você quer dizer com aceitável? Que tipo de aplicativo você está escrevendo? Aceitável significa coisas diferentes para diferentes domínios/aplicações/pessoas. Primeiro, você deve decidir com que rapidez deseja que seu aplicativo responda a uma solicitação. Vamos escolher 1 segundo, apenas por argumentos. Agora, quantas solicitações de banco de dados você precisa fazer para atender a essa solicitação? Digamos 5. Digamos também que também temos 400ms em outro processamento. OK, então isso é 5 lê vezes 100ms cada, mais 400ms de outras coisas. Total de 900ms, que é menor que o nosso objetivo de 1 segundo. Perfeito! 100ms é uma taxa de leitura aceitável. De fato, 120ms ainda seriam aceitáveis, apenas apenas.

Agora, vamos generalizar:

numberOfReads * readTime + otherStuffTime = TotalTime

Preencha seus números e você pode ver o que é um momento aceitável para sua situação específica.

Se você não notou nenhum problema, é por definição um tempo de resposta aceitável. A única pergunta é quanto tempo seus usuários ficam felizes em esperar.

Um "um tempo de resposta aceitável para uma solicitação de leitura de dB" depende inteiramente do seu aplicativo e de seus usuários.

Se o resultado líquido é que seu site é executado rápido o suficiente para satisfazer você e seus usuários, o tempo de resposta lento dos serviços prestados pelo Google no AppEngine é aceitável.

Agora, olhando mais fundo para essa questão em particular, parece que estamos falando de Get's. Aqui são os números para obter latência e me parece que a latência média está mais próxima de 50ms do que 100. Não estou dizendo que isso é bom, mas não acho que seja preciso dizer 100ms.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top