Este documento presenta los resultados de pruebas de benchmarking realizadas a tres servidores web (Nginx, Lighttpd y Apache) ejecutando una aplicación que gestiona servicios web. Lighttpd obtuvo los mejores tiempos de respuesta, seguido de cerca por Nginx, mientras que Apache no pudo manejar la carga de peticiones. Se concluye que Lighttpd es el servidor más adecuado para esta aplicación.
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Análisis y pruebas de benchmarking
1. Tecnología para Gestionar Tu Negocio
Análisis y pruebas de benchmarking de
servicios web en diferentes servidores
HTTP.
Junio 2010
Ready2Fill Services S.C.
Av. Lázaro Cárdenas # 709, Sta. María Ixcotel, 71228. Sta. Lucía del Camino, Oaxaca +(52) 951 176 34 39
2. Contenido
Introducción ...........................................................................................................................3
Objetivos.................................................................................................................................3
Entorno de pruebas ...............................................................................................................4
Descripción.........................................................................................................................4
Configuración de Software del servidor.............................................................................4
Configuración de Hardware................................................................................................4
Configuración de red..........................................................................................................4
Software utilizado para realizar pruebas de Performance.................................................4
Etapa de pruebas ...................................................................................................................5
Servidor Nginx....................................................................................................................5
Servidor Lighttpd ...............................................................................................................7
Servidor Apache ................................................................................................................8
Resultados...........................................................................................................................10
Conclusión............................................................................................................................10
Ready2Fill Services S.C.
Av. Lázaro Cárdenas # 709, Sta. María Ixcotel, 71228. Sta. Lucía del Camino, Oaxaca +(52) 951 176 34 39
3. Intr oducción
Las aplicaciones web actuales y principalmente las aplicaciones de negocios, deben tener la característica
de integración y comunicación con otras aplicaciones. En Ready2Fill desarrollamos un complejo y
poderoso sistema gestor de servicios web utilizando Catalyst; un framework de desarrollo para Perl,
denominado Business Service Agent (BSA) que permite integrar nuestra aplicación WAM Online
Business Tool; con cualquier otro tipo de aplicaciones que cumpla con los estándares de las tecnologías
REST y SOAP.
Esta aplicación se encargara de gestionar cientos de peticiones concurrentes de otras aplicaciones, en un
sistema de este tipo es crucial que los tiempos de procesamiento, respuesta y porcentaje de error sean
mínimos, una de las decisiones más importantes es la selección del servidor web sobre el cuál se va a
ejecutar la aplicación, en este documento se detalla las pruebas de benchmarking realizadas así cómo los
parámetros de medición utilizados, esperando que sirva cómo punto de referencia para aplicaciones con
funciones y requerimientos similares.
Objetivos
• Evaluar el desempeño y rendimiento que tienen los servidores web Apache, Nginx y Lighttpd
ejecutando peticiones concurrentes a los servicios web disponibles en el sistema BSA, que brinde
un panorama que permita hacer la elección correcta del servidor web sobre el cual se va a
ejecutara el sistema en el ambiente de producción.
• Medir el nivel máximo de concurrencia soportado por cara uno de los servidores web que permita
hacer la elección de las características de hardware necesarios para ejecutar este tipo de
aplicaciones.
Ready2Fill Services S.C.
Av. Lázaro Cárdenas # 709, Sta. María Ixcotel, 71228. Sta. Lucía del Camino, Oaxaca +(52) 951 176 34 39
4. Entor no De Pr uebas
Descripción
Para realización de estas pruebas, el sistema BSA se instaló y configuró en cada uno de los servidores
web, utilizando una máquina virtual XEN con sistema operativo Debian GNU/Linux, cada servicio fue
ejecutado de manera única y sin ninguna otra configuración que afectara la disponibilidad de memoria.
Configuración de Software del servidor
Sistema Operativo:
Debian GNU/Linux Squeeze en un máquina virtual con Xen
Servidores HTTP:
Nginx/0.7.65 usando fastcgi.
Apache/2.2.15 usando mod_perl.
Lighttpd/1.4.26 usando fastcgi.
Base de datos:
PostgreSQL 8.4
Framework de desarrollo:
Catalyst 5.8
Configuración de Hardware
Memoria total del sistema: 256 MB
Configuración de red
Se asigno a cada uno de los servidores web un puerto y una dirección para ser ejecutados, a continuación
de muestra al listado de la configuración de nombres de dominios/puertos utilizados desde la computadora
cliente.
Dirección IP / Puerto Servidor Web
sandbox.ready2fill.net:8090 Nginx
sandbox.ready2fill.net:80 Apache
sandbox.ready2fill.net:300 Lighttp
Software utilizado para realizar pruebas de Performance
Apache Jmeter 2.3.4
Ready2Fill Services S.C.
Av. Lázaro Cárdenas # 709, Sta. María Ixcotel, 71228. Sta. Lucía del Camino, Oaxaca +(52) 951 176 34 39
5. Etapa De Pr uebas
La etapa de pruebas se compone de 3 escenarios, en cada uno de ellos se describe las configuraciones
aplicadas y el resultado obtenido, el cuál será analizado en la siguiente sección del documento, en cada
uno de los escenarios.
Los parámetros de medición utilizados son:
• Tiempo mínimo de respuesta
• Tiempo de respuesta máximo
• Tiempo promedio de respuesta
• Porcentaje de error.
• Nivel de concurrencia.
• Consumo de memoria.
Servicios requeridos para todos los escenarios:
• /services/get/customer_invoice/10148 Obtener información de una factura.
• /services/get/vendor_data/10143 Obtener información de un proveedor.
• /services/get/customer_data/10221 Obtener información de un cliente.
• /services/list/vendors_or_search_by_specific_field Listar proveedores.
Servidor Nginx
Escenario 1:
Parámetros:
Número de usuarios conectados: 2
Número de peticiones por usuario: 4
Total de peticiones: 8
Resultados:
Promedio de solicitudes que se pueden atender por segundo: 1.5
Porcentaje de error: 0%
Tiempo de respuesta promedio: 1,6 segundos
Tiempo de respuesta promedio mínimo: 0,5 segundos
Tiempo de respuesta promedio máximo: 1,7 segundos
Ready2Fill Services S.C.
Av. Lázaro Cárdenas # 709, Sta. María Ixcotel, 71228. Sta. Lucía del Camino, Oaxaca +(52) 951 176 34 39
6. Escenario 2:
Parámetros:
Número de usuarios conectados: 20
Número de peticiones por usuario: 4
Total de peticiones: 80
Resultados:
Promedio de solicitudes que se pueden atender por segundo: 1
Porcentaje de error: 11,25%
Tiempo de respuesta promedio: 14.1 segundos
Tiempo de respuesta promedio mínimo: 3.7 segundos
Tiempo de respuesta promedio máximo: 56.2 segundos
Escenario 3:
Parámetros:
Número de usuarios conectados: 40
Número de peticiones por usuario: 4
Total de peticiones: 160
Resultados:
Promedio de solicitudes que se pueden atender por segundo: 3.4
Porcentaje de error: 8,12%
Tiempo de respuesta promedio: 10.3 segundos
Tiempo de respuesta promedio mínimo: 1.4 segundos
Tiempo de respuesta promedio máximo: 20.1 segundos
Observaciones:
Se observo un índice de 87.5% de error al ejecutar el servicio de listar clientes, el cuál es un
servicio que mayor tiempo de procesamiento genera.
Ready2Fill Services S.C.
Av. Lázaro Cárdenas # 709, Sta. María Ixcotel, 71228. Sta. Lucía del Camino, Oaxaca +(52) 951 176 34 39
7. Servidor Lighttpd
Escenario 1:
Parámetros:
Número de usuarios conectados: 2
Número de peticiones por usuario: 4
Total de peticiones: 8
Resultados:
Promedio de solicitudes que se pueden atender por segundo: 2,7
Porcentaje de error: 0%
Tiempo de respuesta promedio: .7 segundos
Tiempo de respuesta promedio mínimo: 0,5 segundos
Tiempo de respuesta promedio máximo: 0,9 segundos
Escenario 2:
Parámetros:
Número de usuarios conectados: 20
Número de peticiones por usuario: 4
Total de peticiones: 80
Resultados:
Promedio de solicitudes que se pueden atender por segundo: 3,2
Porcentaje de error: 0%
Tiempo de respuesta promedio: 5,5 segundos
Tiempo de respuesta promedio mínimo: 1,9 segundos
Tiempo de respuesta promedio máximo: 9.8 segundos
Ready2Fill Services S.C.
Av. Lázaro Cárdenas # 709, Sta. María Ixcotel, 71228. Sta. Lucía del Camino, Oaxaca +(52) 951 176 34 39
8. Escenario 3:
Parámetros:
Número de usuarios conectados: 40
Número de peticiones por usuario: 4
Total de peticiones: 160
Resultados:
Promedio de solicitudes que se pueden atender por segundo: 3,2
Porcentaje de error: 0%
Tiempo de respuesta promedio: 10.6 segundos
Tiempo de respuesta promedio mínimo: 1.0 segundos
Tiempo de respuesta promedio máximo: 14.4 segundos
Servidor Apache
Escenario 1:
Parámetros:
Número de usuarios conectados: 2
Número de peticiones por usuario: 4
Total de peticiones: 8
Resultados:
Porcentaje de error: 25%
Tiempo de respuesta promedio: 0,8 segundos
Tiempo de respuesta promedio mínimo: 0,2 segundos
Tiempo de respuesta promedio máximo: 1,5 segundos
Ready2Fill Services S.C.
Av. Lázaro Cárdenas # 709, Sta. María Ixcotel, 71228. Sta. Lucía del Camino, Oaxaca +(52) 951 176 34 39
9. Escenario 2:
Parámetros:
Número de usuarios conectados: 20
Número de peticiones por usuario: 4
Total de peticiones: 80
Resultados:
Porcentaje de error: 88%
Tiempo de respuesta promedio: 4,6 segundos
Tiempo de respuesta promedio mínimo: 0,5 segundos
Tiempo de respuesta promedio máximo: 16, segundos
Escenario 3:
Parámetros:
Número de usuarios conectados: 40
Número de peticiones por usuario: 4
Total de peticiones: 160
Resultados: Apache Fallo todas las peticiones.
Ready2Fill Services S.C.
Av. Lázaro Cárdenas # 709, Sta. María Ixcotel, 71228. Sta. Lucía del Camino, Oaxaca +(52) 951 176 34 39
10. Resultados
• Escenario 1: El servidor Lighttpd obtuvo los mejores tiempos en la prueba de dos usuarios, al
tener un tiempo de respuesta promedio de 0,7 segundos, seguido del de Nginx con 1,3 segundos.
El servidor Apache obtuvo 100% de error en la petición de listar proveedores.
• Escenario 2: Los mejores tiempos de respuesta los obtuvo el servidor Lighttp con 5,5 segundos
de promedio de respuesta con 80 (20 usuarios) peticiones, el servidor Nginx obtuvo cierta
inestabilidad mientras que apache falló todas las peticiones.
• Escenario 3: El servidor Nginx obtuvo mejores tiempos de respuesta, sin embargo tuvo un 8,6 %
de peticiones fallidas, el servidor lighttpd aunque su tiempo de respuesta fue un poco mayor acertó
en todas la peticiones, el servidor Apache fallo todas las peticiones.
Tiempo promedio por peticiones de usuario
2 Usuarios 20 Usuarios 40 Usuarios
Servicios
Nginx Lighttpd Apache Nginx Lighttpd Apache Nginx Lighttpd Apache
Obtener factura de cliente 1,6 0,9 1,5 7,5 6,1 error 6,9 7,3 error
Consultar proveedor 1,6 0,5 0,9 5,7 6,1 error 8,8 11,6 error
Listar proveedores 1,5 0,7 error 7,5 4,8 error 14,5 11,0 error
Consultar cliente 0,5 0,7 0,5 35,9 5,1 error 11,1 12,6 error
Promedio 1,3 0,7 0,8 14,1 5,5 10,3 10,6
Conclusión
El mayor problema que se presentó fue en consumo de memoria, originado por las múltiples o
operaciones que realiza la aplicación, se observo un alto porcentaje de inestabilidad al ejecutar
BSA en una máquina virtual de 128 MB, por lo que la memoria fue incrementada a 256 MB,
basándonos en los parámetros de medición y en los resultados obtenidos se obtuvo que el
servidor web con mejor desempeño para este tipo de aplicaciones es Lighttpd y muy cerca
del rendimiento esperado se encuentra Nginx por lo que no se descarta su uso con una
configuración más optimizada.
Ready2Fill Services S.C.
Av. Lázaro Cárdenas # 709, Sta. María Ixcotel, 71228. Sta. Lucía del Camino, Oaxaca +(52) 951 176 34 39