| Inicio | Perfil | Servicios | Offshore | Recursos | Mapa del sitio | Contáctenos |          
Artículo "Consejos sobre pruebas de rendimiento y optimización"

En este útil artículo, Floyd Marinescu (autor del popular libro "EJB Design Patterns") nos enseña cómo hacer que nuestra aplicación Web tenga un alto rendimiento incluso bajo una gran carga de usuarios y de datos, basándose para ello en su experiencia como arquitecto jefe del portal TheServerSide.com, el cual recibe más de dos millones de visitas diarias.



6. PROBANDO Y OPTIMIZANDO THESERVERSIDE.COM

TheServerSide.com experimentó numerosos problemas de escalabilidad antes de su lanzamiento. Usando los consejos sugeridos en este artículo, resolvimos todos los problemas, por lo que TheServerSide.com es uno de los portales basados en Java más rápidos que hay.

El primer paso para probar TheServerSide.com fue llenar la base de datos con datos de prueba. Después de llenarla con una cantidad moderada y con una cantidad extrema (añadiendo 16,000 mensajes y 40,000 usuarios a nuestra base de datos), encontramos un problema serio. El tiempo de respuesta de nuestras páginas de nivel máximo saltó desde los 2 segundos a 12 segundos para un único usuario.

No habiendo leído este documento, cometimos el más común de los errores: doblamos la velocidad de nuestra CPU y la memoria de nuestra máquina. Esto sólo redujo el tiempo de respuesta a 8 segundos y, por lo tanto, no era la causa del cuello de botella.

El problema que teníamos indicaba que algo fallaba en la base de datos. Después de comprobar cómo nuestra base de datos procesaba nuestras consultas, descubrimos que nuestras columnas de clave primaria (y otras) no se indexaban correctamente. Esto significa que la base de datos tenía que hacer búsquedas lineales, incluso para ejbFindByPrimaryKey, que es la más común de las llamadas.

Después de hacer cambios a la base de datos y a nuestra estrategia de clave primaria (nuestra base de datos PostgreSQL presentaba errores al manejar el indexado de enteros de 8 bytes), pudimos indexar todas las columnas apropiadas y bajar el tiempo de respuesta a 3 o 4 segundos.

Una vez hubimos optimizado la base de datos, comenzamos a ejecutar pruebas de carga apropiadas. Usamos WebLoad, una potente herramienta para pruebas de cargas. La copia de evaluación permite probar con 12 usuarios concurrentes (probablemente representativos de 30 o 40 personas reales). Después de ejecutar las pruebas al máximo (12 usuarios concurrentes), encontramos que nuestro sitio Web era muy poco escalable. El tiempo de respuesta saltó de los 3 o 4 segundos de un único usuario a 15 o 20 segundos por página bajo cargas más pesadas. Obviamente, estos números no eran lo suficientemente buenos.

Habiendo optimizado la base de datos y actualizado el hardware, pasamos a examinar nuestra arquitectura. Se hicieron pequeñas modificaciones, pero aún no podíamos encontrar la causa del problema. Cuando empezamos a usar un perfilador, todo cambió. Después de ejecutar remotamente Optimize-It (tenía una ventana en mi máquina local mostrando las estadísticas del servidor ejecutándose en nuestro proveedor de servicios de Internet), descubrí la causa del problema. 30% del tiempo de CPU se perdía en comunicaciones de socket con nuestra base de datos. Optimize-It me permitió seguir la pista y ver qué objetos y métodos iniciaban estas llamadas. Así identifiqué un problema de diseño que hacía que consultáramos un conteo en la base de datos cada vez que queríamos mostrar un mensaje en TheServerSide.com. Después de arreglar ese problema tonto, el número de llamadas a la base de datos usadas para mostrar una página bajó de 15 a 1, y, de repente, nuestro tiempo de respuesta disminuyó a cerca de un segundo. Esto era exactamente lo que queríamos.
 

7. CONCLUSIÓN.

Realizar pruebas de rendimiento y optimizar una aplicación puede ser una tarea muy desafiante. Afortunadamente hay herramientas en el mercado que pueden simplificar el proceso. Usando esas herramientas y siguiendo los pasos sencillos que se han explicado en este artículo, usted debería ser capaz de seguir la pista a los cuellos de botella de un sistema de forma efectiva.

Gracias especiales a Mark Turnbull, el mejor administrador de base de datos que conozco.

Compruebe la calidad de nuestro desarrollo offshore.
Aurum Solutions tiene experiencia en desarrollo offshore en J2EE y .NET de alta calidad y reducidos costos para empresas europeas y norteamericanas. Conozca nuestro desarrollo offshore haciendo clic aquí o en la página Web ../../offshore.html.

Cursos de Aurum Solutions relacionados con el tema de este artículo:
“Enterprise Javabeans”
“Servlets y JSP”
“Buenas prácticas en arquitecturas J2EE”
“Buenas prácticas en programación en Java”
“Herramientas de pruebas para Java”

 

 
 

Ir a la página: 1   2   3   4    Siguiente >>

 Versión para imprimir

 

 

| Inicio | Perfil | Servicios | Offshore | Recursos | Mapa del sitio | Contáctenos|