¿Cómo obtener tiempos de respuesta en Tomcat e IIS?

En este post (tomado del antiguo blog de Abstracta, y revisado y ajustado por Juan Pablo Sobral) vamos a repasar cómo obtener los tiempos de respuesta en Tomcat y en IIS.



Si un usuario dice “el sistema anda lento” a nosotros nos gustaría poder distinguir si se trata de problemas reales o si se trata de sensaciones o subjetividades, si su cronómetro está “distorsionado” o si realmente el sistema le está impidiendo trabajar con normalidad.

Nada mejor que números para poder llegar a conclusiones, y para poder conocer el verdadero comportamiento del sistema. Algo que nos termina resultando sumamente útil siempre para conocer cuáles son los tiempos de respuesta de las aplicaciones web, es habilitar algo llamado el “time taken“, y no solo para pruebas de performance sino principalmente para habilitarlo en los sistemas en producción. 

En alto nivel, un webserver se encarga de recibir las request, buscar o generar un documento HTML para enviar como respuesta, todo esto vía HTTP o HTTPS.

Básicamente, lo que vamos a querer hacer para obtener el time-taken es configurando qué cosas queremos que se registren en el access_log. Típicamente acá se registra en qué momento se accedió a qué recurso. Opcionalmente se puede pedir que se guarde información del “user-agent” (para saber de qué browser, o incluso de qué dispositivo se accedió), del tamaño del recurso enviado, el código de respuesta http (200 indica OK, 4XX indica error del lado del cliente, 5XX indica error del lado del server, 3XX indica generalmente una redirección), y así también el tiempo que se tardó desde que se recibió la petición hasta que se retorna una respuesta.

Esto suele ser bastante simple de configurar. Por ejemplo en Tomcat es necesario modificar el “/conf/server.xml” indicando al final esta información:

  <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
     prefix="access_log." suffix=".txt"
     pattern="%h %l %u %t %r %s %b %{Referer}i %{User-Agent}i %D" />

La parte en donde se indica qué cosa guardar es la que está definida en “pattern”. Para saber qué significa cada parámetro podés ver la referencia aquí, pero te adelanto que el %D (o %T) es lo que tenemos que agregar para que se guarde el tiempo de respuesta o time taken.

En el caso de IIS, la configuración se puede hacer en una interfaz gráfica, desde IIS Manager -> Logging.

La configuración para registrar la misma información que en el caso de Tomcat es la siguiente:

Se puede encontrar más información sobre la configuración de logging en IIS aquí.

Luego que tenemos un access log con toda esta información podemos usar una de las tantas herramientas que hay para procesar y visualizar su contenido. Por nombrar dos alternativas, una comercial: Apache Log Viewer, y una open source y gratuita GoAccess.

Leave a Reply

Your email address will not be published. Required fields are marked *