
Tengo 2 servidores, cada uno en dos ubicaciones distintas. Necesito alojar una aplicación en uno y el servidor de base de datos en el otro.
Desde el servidor de aplicaciones, si hago ping al servidor de la base de datos, en promedio obtengo unos 30 ms.
Mi pregunta es:
When I query the database from the app;
¿Va a tomar
30 ms + database_server_query_run_time
O;
¿Va a tomar
30 ms + database_server_query_run_time
+ 30 ms
Me gustaría entender esto por favor.
Respuesta1
Por lo general, se necesitarán más que esas dos opciones.
Ping mide solo el tiempo desde el cliente hasta el servidor y viceversa (rtt - tiempo de ida y vuelta)
Por lo general, las bases de datos usan TCP, por lo que primero debe enviar un paquete SYN para iniciar el protocolo de enlace TCP (para simplificar, digamos 15 ms* + tiempo de CPU, luego recibe un SYN/ACK (15 ms + tiempo de CPU), envía de vuelta un ACK y un solicitud (al menos 15 ms + tiempo de CPU), luego el tiempo para que la base de datos procese la consulta y luego el tiempo (15 ms + CPU) para recuperar los datos, y un poco más para confirmar y cerrar la conexión.
Por supuesto, esto no cuenta la autenticación (nombre de usuario/contraseña) en la base de datos, ni cifrado (apretones de manos SSL/DH o lo que sea necesario).
*la mitad del tiempo de ida y vuelta, asumiendo que la ruta de ida y vuelta es simétrica (la mitad del tiempo para llegar y la otra mitad para regresar... el tiempo de procesamiento de la CPU para la respuesta de ping es muy corto)
Respuesta2
El tiempo de ping es de ida y vuelta. Si lo piensas bien, ¿cómo podría medir el tiempo en un sentido? Por lo tanto, se necesitarán 30 ms más el tiempo de consulta.
Respuesta3
El tiempo de ping representaría los tres juntos, por lo que incluiría el tiempo desde la aplicación hasta el servidor de la base de datos, el tiempo que tardó en completarse la consulta de la base de datos (ya que crea la marca de tiempo para la respuesta una vez completada la consulta) y el tiempo que tardó. en tránsito de regreso al servidor de aplicaciones de ida y vuelta.
Entonces, en resumen, ping es el tiempo de ida y vuelta completo que tomó desde que se envió un paquete hasta que su respuesta llegó de ida y vuelta.
El "ping" de un servicio generalmente se mide en el promedio de múltiples pings, por lo que un ping podría significar un solo paquete enviado o podría referirse al valor promedio de todos los tiempos de ida y vuelta. Entonces, si toma el valor del tiempo de ida y vuelta del ping de los últimos 100 paquetes y en conjunto tienen un promedio de 30 ms, entonces diría "tiene un ping de 30 ms".