Y si hablamos de...
… de Apaches y Tomcats
Noviembre 27th, 2003 - [Enlace local]
A raÃz del problema que tvimos en fin de semana pasado con la conexión Tomcat-Apache en jH, José M. Rus preguntaba porque no tenÃamos directamente Tomcat en el puerto 80, en lugar de tenerlos juntos. Ã?lvaro comentaba que era porque Apache servÃa más rápido algunos contenidos, lo tÃpico. Pero como a mi me parece algo más complejo que todo esto, pues aquà voy.
Bien, no tenemos Tomcat en el puerto 80 porque tenemos tres tomcats ejecutándose. ¿Por qué?. Porque realmente no esta en su sano juicio quién piense que es mejor meter en una JVM las (ahora mismo) 8 aplicaciones java de jH que tenerlas en tres separadas. Razones... varias:
- Hay que proteger el dominio javahispano.org. Este es la base de todo, y no podemos permitirnos que otras aplicaciones tiren el servidor, o reiniciarlo cada dos por tres (se pasa incluso mes y medio sin reiniciarse). Por eso tiene su propio tomcat.
- Hay aplicaciones que pueden ser potencialmente peligrosas, como es el RollerWeblogger. Da más errores de los esperados, y por eso tiene su propio tomcat, no hacerlo asà nos dejarÃa sin aplicaciones demasiadas veces.
- Un sistema unix trabaja mejor con 3 JVM que tengan 100 hilos cada una que con una con 300.
Y ahora paso al tema de Apache. La verdad, para sitios normales, es necesario poner Apache si se cumple alguna de estas condiciones:
- Se tienen subdominios que necesiten PHP u otras tecnologÃas (como es nuestro caso en jH)
- Las web con Java sirven páginas estáticas. Y digo páginas, porque imágenes no cuentan, lo cuanl NO es nuestro caso, donde toda la salida viene de Tomcat.
¿Por qué digo esto?. Sencillo.
- Las imagenes las cachean los navegadores, por lo que el tiempo de servicio ganado (al hacerlo Apache) en las mismas es despreciable si el usuario visita varias páginas de nuestro sitio, que obviamente es lo que esperamos.
- Sin embargo ese tiempo extra de servicio (el de pasar las peticiones de Apache a Tomcat), se produce por cada petición, y puede ser que queramos (si podemos) ahorrarnos ese tiempo.
¡Ah!, si, que Apache es más estable. Bueno... no sé, para una web normal (por ejemplo jH, con habitualmente más de 100 usuarios online durante las horas punta), Tomcat es más que suficiente, mucho más. Y bueno, si no os lo creeis, desde este sabado pasado TODAS las peticiones a jH y subdominios (incluidas las imágenes) pasan por Tomcat porque estan unidos con mod_proxy desde que dejó de funcionar el mod_jk.
En todo caso, como siempre, no os tomeis esto como una receta infalible del uso de Apache y Tomcat, tendreis siempre que mirar vuestra situación concreta.