Pergunta

Atualmente, estou trabalhando em um sistema n-tier e lutando contra alguns problemas de desempenho do banco de dados. Uma área que temos vindo a investigar é a latência entre o servidor de banco de dados e servidor de aplicativos. Em nosso ambiente de teste tempos médios de ping entre as duas caixas é na região de 0.2ms no entanto no local dos clientes é mais na região de 8.2 ms. É aquele Somthing deveríamos estar preocupados?

Para o seu sistema média o que vocês consideram uma latência razoável e como você iria sobre o teste / medição da latência?

Karl

Foi útil?

Solução

Em suma: não

O que você deve monitorar o desempenho global das suas consultas (ou seja, o transporte para o DB + execução + volta transporte para o servidor)

O que você poderia fazer é usar um contador de desempenho para monitorar o tempo suas consultas geralmente levam para executar. Você provavelmente vai ver os seus resultados são sobre a área de milissegundo.

Não há tal coisa como "latência razoável". Você deve, antes, considerar a "latência razoável para o seu projeto", que iria variar muito dependendo do que você está trabalhando. As pessoas não têm a mesma expectativa para uma plataforma de negociação em tempo real e para uma leitura única website amador.

Outras dicas

Desculpe pela resposta muito prematura, mas me deparei com essa pergunta quando eu estava à procura de métricas do que latências de rede outros estavam conseguindo entre seu servidor de aplicativo e servidor db. De qualquer forma, eu notei que as outras respostas

De qualquer forma, em suma: Sim., Latência de rede (medida pelo ping) pode fazer uma enorme diferença

Se a sua resposta do banco de dados é .001ms então você verá um impacto enorme de ir de um 0.2ms para 8ms ping. Ouvi dizer que os protocolos de banco de dados são tagarelas, que se verdadeiros meios que seriam mais afetadas pela latência de rede lenta contra http.

E mais do que provável, se você estiver executando uma consulta, em seguida, adicionando 8ms para obter a resposta do db não vai importar. Mas se você está fazendo 10.000 consultas que acontece geralmente com mau código ou uso não-otimizado de um ORM, então você terá que esperar um 80 segundo extras para um ping 8ms, onde por um ping 0.2ms, você só esperar 4 segundos.

Por uma questão de política para mim, eu nunca deixe aplicações cliente contato o banco de dados diretamente. Eu exigir que os pedidos do cliente sempre passar por um servidor de aplicação (por exemplo, um serviço web REST). Dessa forma, se eu acidentalmente ter um problema ORM "1 + N", então ele não é tão impactante. Eu ainda iria tentar resolver o problema subjacente ...

Em um servidor baseado em Linux, você pode testar o efeito de latência-se usando o comando tc.

Por exemplo, este comando irá adicionar 10ms de atraso para todos os pacotes que vão via eth0

tc qdisc add dev eth0 root netem delay 10ms

usar este comando para remover o atraso

tc qdisc del dev eth0 root

Mais detalhes disponíveis aqui: http://devresources.linux-foundation.org/shemminger/netem/example. html

Todas as aplicações serão diferentes, mas tenho definitivamente visto situações em que 10ms de latência tem tido um impacto significativo sobre o desempenho do sistema.

Um dos honchos cabeça no answers.com disse de acordo com seus estudos, 400 ms tempo de espera para um carregamento da página web é sobre o momento em que começarem levar as pessoas cancelar o carregamento da página e em outros lugares. Meu conselho é olhar para todo o processo, desde o pedido original do cliente para realização e se você está fazendo bem lá, não há necessidade de otimizar ainda mais. 8.2 ms vs 0,2 ms é exponencialmente maior em um sentido matemático, mas a partir de um sentido humano, ninguém pode realmente perceber uma diferença 8.0 ms. É por isso que eles têm acabamentos de fotografias em corridas;)

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