Algunos incidentes con el log4j

Recientemente acabamos de liberar un proyecto sobre el cual trabaje. Despúes de un par de días productivos encontramos algunos threads que se quedaban bloqueados. Revisando el dump de los threads las clases de log4j estaban bloqueando el thread cuando intentaban escribir a un archivo.

thread blocked

Las causas que originaron estos bloqueos fueron:

  • La aplicación esta instalada en un cluster de tres servidores.
  • Se configuro el log4j para que escribiera en un solo archivo appender.
  • La aplicación es de misión crítica y recibe un gran número de peticiones simultáneas.
  • A esto se le suma que la aplicación invocaba en varios lugares la función log4j.debug, enviando gran cantidad de texto al archivo appender.

A mi me pareció rasonable la causa y el efecto, pero nunca me había imaginado que el loggeo (o loggin) de las aplicaciones pudiera causar tal conflicto. No estoy culpando a la libreria de Apache Commons, más bien, quiero presentar el caso, para que lo puedan tomar en cuenta en desarrollo de sistemas de misión crítica.

Aquí les presento algunas referencias que encontré acerca del buen (o mal) uso del loggeo:

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: