Cuando se prueba la carga de una aplicación, el primer conjunto de pruebas debe centrarse en medir el rendimiento máximo. Esto es especialmente cierto en el caso de las aplicaciones interactivas para múltiples usuarios, como las aplicaciones web. El rendimiento máximo se mide mejor ejecutando algunos usuarios emulados con cero tiempo de reflexión. Esto significa que cada usuario emulado envía una solicitud, recibe una respuesta e inmediatamente regresa para enviar la siguiente solicitud. Aunque esto es artificial, es la mejor manera de determinar rápidamente el rendimiento máximo de la infraestructura del servidor.
Ley de Little
Una vez que tenga ese rendimiento (digamos X), podemos usar la Ley de Little para estimar el número de usuarios simultáneos reales que la aplicación puede admitir. En términos simples, la Ley de Little establece que:
- ¿Cuáles son los beneficios del software de gestión hospitalaria?
- ¿Cuáles son los pros y los contras de los diversos generadores de patrones de tejido disponibles?
- ¿Cuál es su experiencia al usar diferentes bases de datos en una aplicación (descripciones elaboradas)?
- ¿Dónde puede encontrar software escolar personalizado?
- ¿Hay alguna compañía que ofrezca una aplicación de comida única?
N = X / λ
donde N es el número de usuarios concurrentes, λ es la tasa de llegada promedio y X es el rendimiento. Tenga en cuenta que la tasa de llegada es la inversa del tiempo entre llegadas, es decir, el tiempo entre solicitudes.
Para entender esto mejor, tomemos un ejemplo concreto de algunas pruebas que ejecuté en un script PHP básico implementado en un servidor apache. El rendimiento máximo obtenido fue de 2011.763 solicitudes / segundo con un tiempo de respuesta promedio de 6.737 ms, un tiempo de reflexión promedio de 0.003 segundos cuando se ejecutan 20 usuarios. La tasa de llegada es la inversa del tiempo entre llegadas, que es la suma del tiempo de respuesta y el tiempo de reflexión. En este caso, X es .2011.763 y λ es 1 / (0.006737 + 0.003). Por lo tanto,
N = X / λ = 2011.763 * 0.009737 = 19.5885
Esto es bastante cercano al número real de usuarios emulados, que es 20.
Estimación de usuarios concurrentes
Todo esto está muy bien, pero ¿cómo nos ayuda esto a estimar el número de usuarios concurrentes reales (con un tiempo de reflexión distinto de cero) que el sistema puede admitir? Utilizando el mismo ejemplo que el anterior, supongamos que si se tratara de una aplicación real, el tiempo promedio entre llegadas es de 5 segundos. Usando la Ley de Little, ahora podemos calcular N como:
N = X / λ = 2011.763 * 5 = 10058 usuarios.
En otras palabras, esta aplicación que se ejecuta en esta misma infraestructura puede admitir más de 10,000 usuarios concurrentes con un tiempo entre llegadas de 5 segundos.
¿Qué dice esto para los tiempos de reflexión? Si suponemos que la aplicación (y la infraestructura) continuarán funcionando de la misma manera a medida que aumenta el número de usuarios conectados (es decir, mantiene el tiempo de respuesta promedio de 0.006737 segundos), el tiempo de reflexión promedio es de 4.993 segundos. Si el tiempo de respuesta se degrada a medida que aumenta la carga (que suele ser el caso después de un cierto punto), la cantidad de usuarios admitidos también disminuirá correspondientemente.
Una aplicación bien diseñada puede escalar linealmente para admitir 10 o 100 de miles de usuarios. En el caso de sitios web grandes como Facebook, Ebay y Flickr, las aplicaciones escalan para manejar a millones de usuarios. Pero obviamente, estas compañías han invertido tremendamente para garantizar que sus aplicaciones y la infraestructura de software puedan escalar.
La Ley de Little se puede usar para estimar el número máximo de usuarios concurrentes que su aplicación puede admitir. Como tal, es una herramienta útil para obtener una idea rápida y aproximada. Por ejemplo, si la Ley de Little indica que la aplicación solo puede admitir 10,000 usuarios pero su objetivo es realmente 20,000 usuarios, usted sabe que tiene trabajo que hacer para mejorar el rendimiento básico.