Pregunta

Actualmente estoy trabajando en un sistema de n niveles y luchando contra algunos problemas de rendimiento de la base de datos. Un área que hemos estado investigando es la latencia entre el servidor de base de datos y el servidor de aplicaciones. En nuestro entorno de prueba el el tiempo promedio de ping entre las dos casillas es de 0,2 ms, sin embargo, en el sitio del cliente es más de 8,2 ms. Es eso ¿Algo de lo que debamos preocuparnos?

Para su sistema promedio, ¿qué consideran una latencia razonable y cómo harían para evaluar / medir la latencia?

Karl

¿Fue útil?

Solución

En resumen: no!

Lo que debe monitorear es el rendimiento global de sus consultas (es decir, el transporte a la ejecución de DB + + el transporte de vuelta a su servidor)

Lo que podría hacer es usar un contador de rendimiento para monitorear el tiempo que sus consultas suelen tardar en ejecutarse. Probablemente verá que sus resultados están sobre el área de milisegundos.

No hay tal cosa como " Latencia razonable " ;. Debería considerar la " Latencia razonable para su proyecto " ;, que variaría mucho dependiendo de en qué esté trabajando. Las personas no tienen la misma expectativa de una plataforma de negociación en tiempo real y de un sitio web de solo lectura para aficionados.

Otros consejos

Lo siento por la muy inoportuna respuesta, pero me topé con esta pregunta cuando estaba buscando métricas de las latencias de red que otros estaban logrando entre su servidor de aplicaciones y el servidor de bases de datos. De todos modos, me di cuenta de que las otras respuestas

En resumen, en resumen: sí, la latencia de la red (medida mediante ping) puede marcar una gran diferencia.

Si la respuesta de su base de datos es .001ms, verá un gran impacto al pasar de un ping de 0.2ms a 8ms. He escuchado que los protocolos de la base de datos son conversadores, lo que, de ser cierto, significa que se verían más afectados por la latencia lenta de la red en comparación con http.

Y más que probable, si está ejecutando 1 consulta, entonces agregar 8ms para obtener la respuesta de la base de datos no va a importar. Pero si está realizando 10.000 consultas que generalmente ocurren con un código incorrecto o un uso no optimizado de un ORM, entonces tendrá que esperar 80 segundos adicionales para un ping de 8 ms, mientras que para un ping de 0,2 ms, solo esperaría 4 segundos.

Como cuestión de política para mí, nunca dejo que las aplicaciones de los clientes contacten directamente con la base de datos. Requiero que las aplicaciones cliente siempre pasen por un servidor de aplicaciones (por ejemplo, un servicio web REST). De esa manera, si accidentalmente tengo un " 1 + N " Problema de ORM, entonces no es tan impactante. Todavía intentaría solucionar el problema subyacente ...

En un servidor basado en Linux, puedes probar el efecto de la latencia utilizando el comando tc.

Por ejemplo, este comando agregará un retraso de 10 ms a todos los paquetes que pasan por eth0

tc qdisc add dev eth0 root netem delay 10ms

use este comando para eliminar el retraso

tc qdisc del dev eth0 root

Más detalles disponibles aquí: http://devresources.linux-foundation.org/shemminger/netem/example. html

Todas las aplicaciones serán diferentes, pero definitivamente he visto situaciones en las que la latencia de 10 ms ha tenido un impacto significativo en el rendimiento del sistema.

Uno de los principales responsables de answers.com dijo que, según sus estudios, el tiempo de espera de 400 ms para la carga de una página web es aproximadamente el momento en que comienzan a hacer que las personas cancelen la carga de la página y se vayan a otra parte. Mi consejo es observar todo el proceso, desde la solicitud original del cliente hasta su cumplimiento, y si lo está haciendo bien allí, no hay necesidad de optimizar más. 8.2 ms frente a 0.2 ms es exponencialmente mayor en sentido matemático, pero desde el punto de vista humano, nadie puede percibir una diferencia de 8.0 ms. Es por eso que tienen acabados de foto en carreras;)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top