Nos encontramos con un problema interesante que notamos al hacer pruebas de estrés de nuestro sistema. Estamos usando log4j (en JBOSS) muy fuertemente para nuestro registro. Aquí es un ejemplo de algunos ingenuos que la tala AVELog4j: ¿está sincronizado para llamadas multiproceso?
void someFunction()
{
Log.info("entered some function");
...
Log.info("existed some function");
}
Ahora lo interesante que notamos es que si lanzamos 100 hilos en contra de esta función; las llamadas Log.info() se bloquean por hilo ... lo que significa que el hilo 2 está esperando que hilo1 termine la llamada "Log.info". En caso de Thread 100; termina esperando bastante tiempo. Estamos usando un registrador de archivos nativo.
¿Es esto un problema conocido?
'Log' es una clase? ¿O un objeto de tipo 'Logger'? – Tudor
Log es un objeto de tipo logger obtenido de Loggerfactory – shergill
Ok gracias. Sólo quería asegurarme. Estaba yendo a través del código fuente de 'Logger' y encontré que de hecho hay una sección' synchronized' allí. – Tudor