
Tenho 2 servidores, cada um em dois locais separados. Preciso hospedar um aplicativo em um e o servidor de banco de dados no outro.
No servidor de aplicativos, se eu executar ping no servidor de banco de dados, recebo em média cerca de 30 ms.
Minha pergunta é:
When I query the database from the app;
Será que vai demorar
30 ms + database_server_query_run_time
Ou;
Será que vai demorar
30 ms + database_server_query_run_time
+ 30ms
Eu gostaria de entender isso, por favor.
Responder1
Geralmente levará mais do que essas duas opções.
O Ping mede apenas o tempo do cliente ao servidor e vice-versa (rtt - tempo de ida e volta)
Normalmente os bancos de dados usam TCP, então primeiro você precisa enviar um pacote SYN para iniciar o handshake TCP (para simplificar, digamos 15ms* + tempo de CPU, então você recebe um SYN/ACK (15ms+tempo de CPU), envia de volta um ACK e um solicitação (pelo menos 15ms + tempo de CPU), depois o tempo para o banco de dados processar a consulta e, em seguida, o tempo (15ms + CPU) para recuperar os dados e um pouco mais para confirmar e fechar a conexão.
É claro que isso não conta a autenticação (nome de usuário/senha) no banco de dados e nenhuma criptografia (handshakes SSL/DH ou o que for necessário).
*metade do tempo de ida e volta, assumindo que a rota de ida e volta seja simétrica (metade do tempo para chegar lá e metade para voltar... o tempo de processamento da CPU para resposta do ping é muito curto)
Responder2
O tempo de ping é de ida e volta. Se você pensar sobre isso - como poderia medir o tempo de ida? Portanto, levará 30 ms mais o tempo de consulta.
Responder3
O tempo de ping representaria todos os três juntos, portanto incluiria o tempo do aplicativo ao servidor de banco de dados, o tempo que a consulta ao banco de dados levou para ser concluída (já que cria o carimbo de data e hora para a resposta após a conclusão da consulta) e o tempo que levou em trânsito de volta ao servidor de aplicativos de ida e volta.
Então, resumindo, ping é o tempo de ida e volta com tudo incluído que levou desde o envio de um pacote até sua resposta chegando de ida e volta.
O "ping" de um serviço geralmente é medido na média de vários pings, portanto, um ping pode significar um único pacote enviado ou pode estar se referindo ao valor médio de todos os tempos de ida e volta. E então, se você pegasse o valor do tempo de ida e volta do ping dos últimos 100 pacotes e todos juntos eles tivessem uma média de 30ms, então você diria "ele tem um ping de 30ms".