Dados obtidos do ping: é de ida e volta ou de ida?

19

Eu tenho 2 servidores, cada um em dois locais separados. Eu preciso hospedar um aplicativo em um e o servidor de banco de dados no outro.

No servidor de aplicativos, se eu fizer ping no servidor de banco de dados, em média, recebo cerca de 30 ms.

Minha pergunta é:

When I query the database from the app;

Is it going to take 30 ms + database_server_query_run_time

Ou

Is it going to take 30 ms + database_server_query_run_time + 30ms

Eu gostaria de entender isso, por favor.

    
por Phil 15.10.2012 / 14:44

2 respostas

17

Geralmente, serão necessárias mais do que essas duas opções.

Ping mede apenas o tempo do cliente, para o servidor e vice-versa (tempo de ida e volta)

Geralmente bancos de dados usam TCP, então primeiro você precisa enviar um pacote SYN para iniciar o handshake TCP (para simplificar, digamos 15ms * + cpu time, então você recebe e SYN / ACK (15ms + cpu time), enviar de volta um ACK e uma solicitação (pelo menos 15ms + tempo de CPU), o tempo para o DB processar a consulta e, em seguida, o tempo (15ms + cpu) para recuperar os dados e um pouco mais para ack e fechar a conexão.

Isto é claro, sem contar a autenticação (nome de usuário / senha) para o banco de dados, e sem criptografia (handshake SSL / DH ou o que for necessário).

* metade de um tempo de ida e volta, assumindo que a rota para lá e para trás é simétrica (metade do tempo para chegar lá e metade para voltar ... tempo de processamento da CPU para resposta de ping é muito curto)

    
por 15.10.2012 / 14:50
7

O tempo de ping é de ida e volta. Se você pensar sobre isso - como poderia medir o tempo de um caminho? Então, serão necessários 30ms mais o tempo de consulta.

    
por 15.10.2012 / 14:48