Programación, literatura y otras artes menores

Profilers

Publicado por caente en Septiembre 18, 2007

Cuantas veces hacemos una aplicación web sin siquiera pensar en la escalabilidad? Quizás en proyectos serios las pruebas de carga sean cosa normal, pero estoy seguro que en muchos lugares simplemente se hace una aplicación web y ya, quizás algunas pruebas unitarias para estar seguros de que da las respuestas debidas y que tiene las validaciones correspondientes. Pero por lo demás se confía en la buena voluntad del servidor.

En ocasiones anteriores he sido obligado a trabajar de esa manera, hasta hace poco, que tuve la oportunidad de realizar pruebas de carga, bueno las estoy realizando, la aplicación en realidad es un puente entre varios elementos, un cliente remoto(no un navegador) que realiza una petición por http y espera la respuesta, en tanto la aplicación debe entrar a una base de datos(mysql) y modificar una fila, tras lo cual, luego de cierto procesamiento a la petición del cliente remoto, debe enviar esa petición procesada a otro sistema remoto, quién a su vez debe reenviar el mensaje a otro sistema remoto, esperar respuesta, agregar una fila a la base de datos y reenviar la respuesta a la aplicación web, quien a su vez la procesa y se la envía debidamente formateada al cliente. Y sí, todo ese enredo es inevitable…

Nuestro sistema(cliente remoto, aplicación web, y sistema remoto 1) debe soportar, para la primera etapa, 8000 conexiones concurrentes; pues bien por el momento solo tengo una laptop a 2GHz con 1 Gb de RAM, con Ubuntu 7.04 como SO; Al principio de las pruebas apenas lograba las 2000 peticiones, entre las 1000 y 2000 peticiones ya tenía time-outs, que son manejables, pero que preferiría no existieran.

Pero gracias al profiler de Netbeans, he logrado ir a los puntos comprometidos de la aplicación web, la más complicada, y tras algunos cambios pude ver la diferencia del uso de memoria de la pila, si antes llegaba rápidamente a los 300 megas, y montones de time outs ahora por fin llego a las 3000 peticiones con picos en la pila de 170 megas, y tiempos de respuesta aceptables.

Desgraciadamente el profiler de netbeans consume gran cantidad de recursos, por lo que falsea el resultado, por otra parte sería genial un profiler que supiera auditar varias jvm y además monitorear el rendimiento del sistema operativo en general. Más o menos esto puede lograrse con el profiler de netbeans y una herramienta como AppManager, pero aun es insuficiente.

Una respuesta a “Profilers”

  1. Simplicidad JEE5 « Programación, literatura y otras artes menores Dice:

    [...] Profilers [...]

Escribe un comentario

XHTML: Puedes usar estas etiquetas: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>