Estoy configurando una pila nginx y optimizando la configuración antes de lanzarla. Al ejecutar ab para probar la máquina, me decepcionó ver que las cosas superan las 150 solicitudes por segundo con un número significativo de solicitudes que tardan> 1 segundo en regresar. Curiosamente, la máquina en sí ni siquiera respiraba con dificultad.
Finalmente pensé hacer ping a la caja y vi tiempos de ping alrededor de 100-125 ms. (La máquina, para mi sorpresa, está en todo el país). Entonces, parece que la latencia de la red está dominando mis pruebas. Al ejecutar las mismas pruebas desde una máquina en la misma red que el servidor (ping veces <1 ms) y veo> 5000 solicitudes por segundo, lo que está más en línea con lo que esperaba de la máquina.
Pero esto me hizo pensar: ¿cómo puedo determinar e informar una medida "realista" de solicitudes por segundo para un servidor web? Siempre ve reclamos sobre el rendimiento, pero ¿no debería tenerse en cuenta la latencia de la red? Claro que puedo atender 5000 solicitudes por segundo a una máquina al lado del servidor, pero no a una máquina en todo el país. Si tengo muchas conexiones lentas, eventualmente afectarán el rendimiento de mi servidor, ¿verdad? ¿O estoy pensando en todo esto mal?
Perdóname si esto es ingeniería de redes 101 cosas. Soy desarrollador de oficio.
Actualización: editado para mayor claridad.
ab
tiene una opción de concurrencia ¿A qué lo pusiste? Además, si está probando desde una conexión ADSL doméstica, es probable que la prueba esté dominada por su ancho de banda y no probará nada en el servidor.Respuestas:
Si le importa el rendimiento de su servidor cuando se accede desde algún lugar del mundo, pídale a un amigo en algún lugar del mundo (debe tener un buen ancho de banda) que instale sproxy + siege en su caja de Linux. Solo descarga, configura, crea. Estas herramientas son pequeñas, se compilan en segundos.
Primero, comience
sproxy
en la caja de Linux. Por defecto, se ejecutará en el puerto 9001 en localhost (127.0.0.1). Si desea acceder desde afuera, simplemente pásele la dirección IP de salida como parámetro.Ahora conéctese a sproxy configurando su navegador para usar esta ip y puerto como proxy para HTTP. Todo lo que hagas a partir de ahora es grabado por sproxy y puede reproducirse más tarde. Ahora navegue por su sitio, haga cosas que harían sus clientes e intente hacer cosas "caras" que utilicen su servidor.
Cuando termine, finalice sproxy presionando CTRL ^ C. Grabó sus acciones a
$HOME/urls.txt
. Mueva el archivo a donde reside el asedio. Para comenzar las pruebas de estrés, corresiege -f urls.txt -d NUM -c NUM
.d
significa retraso entre solicitudes, al hacer pruebas de rendimiento, use 1 (segundo).c
representa el número de usuarios simultáneos simulados. Elija a voluntad, pero comience bajo. Siege le mostrará la cantidad de transacciones por segundo, tasa de error, cuánto tiempo demoraron las solicitudes promedio, etc. Es una herramienta poderosa y fácil de usar.Si necesita más información sobre los parámetros (hay muchos), comprobar el estado de sitio manual de un el manual de sProxy
Para obtener resultados más realistas, permita que muchas personas prueben su servidor de varios países a la vez y que le envíen las estadísticas.
fuente
La medida realista de solicitudes / seg. Debe tomarse de los registros de acceso. En mi opinión, la latencia de la solicitud no tiene nada que ver con la carga del servidor, ya que el servidor procesa todas las solicitudes a la misma velocidad independientemente de su origen.
fuente
Considere usar servicios como Soasta Cloudtest . Con él, puede obtener informes bastante detallados sobre sus pruebas y puede ejecutar pruebas de rendimiento de varios proveedores de nube pública / virtualización. Puede configurar qué tan duro y durante cuánto tiempo desea martillar sus servidores. También tienen una versión " lite " gratuita para que pueda ver lo que puede hacer antes de comprometer dinero.
fuente