【发布时间】:2012-02-18 18:32:08
【问题描述】:
我们在对系统进行压力测试时遇到了一个有趣的问题。我们大量使用 log4j(在 JBOSS 中)进行日志记录。以下是我们常用的一些日志记录的简单示例
void someFunction()
{
Log.info("entered some function");
...
Log.info("existed some function");
}
现在我们注意到有趣的事情是,如果我们针对这个函数启动 100 个线程;每个线程的 Log.info() 调用都是阻塞的。这意味着线程 2 正在等待 thread1 完成“Log.info”调用。在线程 100 的情况下;它最终等待了很长时间。我们正在使用本机文件记录器。
这是一个已知问题吗?
【问题讨论】:
-
Log是一个类?还是Logger类型的对象? -
Log是从Loggerfactory获取的logger类型的对象
-
好的,谢谢。只是想确定一下。我正在查看
Logger的源代码,发现那里确实有一个synchronized部分。
标签: java multithreading jboss log4j synchronized