martes, 29 de abril de 2008

Quién me habla...

lunes, 28 de abril de 2008

Rendimiento

Retomando un tema ya comentado por Martín hace algún tiempo, y sin entrar en las consideraciones que ya él realizó, los problemas de rendimiento de una aplicación no tienen por qué estar en la propia aplicación.

Supongamos una estructura tipo, con un servidor web (Apache httpd), un contenedor de servlets (Apache Tomcat), y una base de datos (MySQL), con una aplicación que hace uso de un datasource para la comunicación con la base de datos. Tenemos hasta cuatro puntos de ajuste que pueden causar, si están mal configurados, problemas serios de rendimiento.

Estudiemos el primero, tiempos de respuesta de la base de datos. Nuestro sistema debe responder en un tiempo razonable así que, tener accesos a la base de datos que no sean casi inmediatos no nos vale. Tiempos de respuesta superior al segundo son inaceptables.

El segundo, la configuración del pool de conexiones. El número de conexiones que debe gestionar debe ser realista. Como tengo más peticiones al servidor web, sumo más conexiones al pool... si la base de datos no lo soporta simplemente estás haciendo que su rendimiento decaiga. También configurar unos timeouts altos (jamás lo pongas como ilimitado) es inútil. Tiempos superiores a los 5000ms en este punto es absurdo. Mejor manda un error 500 con algún mensaje que luego comentaremos.

Conexiones al contenedor de servlets, Tomcat en nuestro ejemplo, es el tercero de los puntos. Volvemos a lo mismo, el número de peticiones que soporte (siempre peticiones dinámicas, un tomcat no está para servir elementos estáticos) debe ser ajustado a la realidad, y los timeouts, igual que para el pool, 5000ms son ya 5 segundos...

El último, Apache, cuidado con la memoria de cada hilo si usas php, cuidado con el número de conexiones persistentes, y vuelta a los timeouts, ¿de qué vale un timeout altísimo si no soportamos ni 5 segundos a que cargue una página?

Este post no te va a contar cómo configurar cada uno de los elementos, eso lo dejo para otro día, pero sí que has de tener en cuenta todos esos puntos, muy sencillos, antes de meterte en otros jaleos. Y recuerda, todos los servicios (base de datos, tomcat, y apache) requieren de una administración y configuración para entornos en producción, nunca es suficiente dejarlos tal cual se instalan.

viernes, 25 de abril de 2008

Quién me mira, quién está ahí...

Retomando nuevamente el comienzo

Parece que empezar cosas se me está dando bien, y como dije en anteriores posts, en este blog espero escribir sobre temas relacionados con mi trabajo diario, fundamentalmente Java, aplicaciones web, rendimiento, escalabilidad, y cualquier cosa que me interese en el momento de enviar un post.

Tras tres post...

Hace sólo un día que empecé a escribir en mi blog de javaHispano y he decidido moverlo aquí. Los motivos, simplemente el tiempo y la facilidad que me ofrece blogger... una pena porque me gustaba el hecho de tenerlo alojado bajo weblogs.javahispano.org pero esta interfaz es más sencilla.

Como dije allí, vamos a ver cuánto tiempo seré capaz de mantener el blog...