TOM, gato bandido!


Hace unos días, en Concepto se terminó la migración de una aplicación a su funcionamiento full web. Esta migración (otra mas y van.....) esta trae de yapa un cambio del modelo de negocio, por lo que pasaría a ser algo del tipo de SaaS. Veremos como nos va.
Cuando hicimos las pruebas en la intranet, todo funciona muy bien. La segunda etapa era hacer lo mismo en internet, para empezar a ver como podría ser para un usuario real, estar todo el día con una aplicación en el web, con sus latencias, interrupciones y demás. Si bien tenemos mucha experiencia en poner aplicaciones en internet, cada aplicacion tiene sus particularidades y esta era la primera hosteada con tomcat que ibamos a usar en para cosas de "mision crítica".
Las primeras pruebas que realizamos en internet, vimos que la performance si bien no era espantosa, no era apta para poder trabajar todo el día sobre ella. Haciendo algunas mediciones, se ve que las páginas demoran un tiempo fijo (unos 8 segundos) para cargar, en forma bastante independiente del contenido de la misma. O sea demoraba lo mismo un webpanels con una grilla de 40 lineas, que una pantalla de 2 lineas. Nos focalizamos en en webpanels generados con el pattern WorkWith y era llamativo que todo demoraba mas o menos lo mismo. Los tiempos no eran intolerables, pero era dificil pensar que una persona podía estar trabajando todo el día con esos tiempos de respuesta.
Alexander empezo a estudiar el problema, viendolo desde las dos puntas, el servidor y el cliente.
Despues que se compro de oferta el libro "Pro Apache Tomcat", está hecho un tigre con esa herramienta.
En el servidor, habilitó el log, para permitir ver que es lo que estaba haciendo y por otro lado en el cliente, habilitó Fiddler (esta muy bueno) para poder ver que es lo que sucedía del lado del cliente. Como la aplicacion funcionaba bien en la red interna, no parecia algo relacionado con la logica de la aplicación ni la base de datos, con lo que en principio se descartaron estas areas.
Luego de algunas pruebas, encontró que no se estaban cacheando ninguna pagina/imagen/javascript y por lo tanto, cada carga de página demoraba mas o menos lo mismo pues estaba relizando una cantidad de request al server.
Estudiando el problema y buscando en internet, vió que tomcat tiene un bug que deshabilita el cache (bastante mal reportado y cerrado) cuando la webapp tiene alguna autenticación.
Cambiando el archivo xml de configuracion de la webapps correspondiente y poniendo

< classname="org.apache.catalina.authenticator.BasicAuthenticator" disableproxycaching="false">


Ahora, anda volando...Parece un jugador de futbol juvenil a quien le inyectaron creatina para caballos.

Comentarios

  1. Hola, estoy ante una situación parecida. Tengo una aplicación Web que ejecuto de manera local y funciona correctamente, pero cuando intento acceder desde Internet no es posible.
    Quería saber en qué fichero exacto de la carpeta webapps del tomcat hay que insertar ese fragmento de código, y en qué parte del mismo.
    Yo he probado en el archivo de configuración server.xml, pero con ese fragmento de código no me deja ni arrancar el tomcat siquiera.

    Agradecería mucho que me contestara, si lo sabe, en un correo a la dirección: just_my_own_way@hotmail.com

    Muchas gracias y un saludo.

    ResponderBorrar
  2. God of War:
    En el extracto que pongo tiene un blanco de mas al final, entre la barra / y > que hay que sacarla.
    Si lo dejo, blogger, no lo muestra...

    Fijate bien en http://issues.apache.org/bugzilla/show_bug.cgi?id=27122
    donde lo explican mejor, tenes que cambiar el FormAuthenticator, por el motodo de autenticacion que vos estes usando.

    ResponderBorrar

Publicar un comentario

1) Lee el post
2) Poné tu opinión sobre el mismo.
Todos los comentarios serán leidos y la mayoría son publicados.

Entradas más populares de este blog

La nefasta influencia del golero de Cacho Bochinche en el fútbol uruguayo

Aplicación monolítica o distribuida?

Funcionalidades de GeneXus que vale la pena conocer: DATE Constants.