监视负载下的log4j行为

BzH*_*BzH 7 io concurrency logging log4j

我想在访问不同页面的高负载会话下测试我的J2EE应用程序.

此Web应用程序使用Log4J记录大量错误,警告和信息.我想测试这个负载对写日志文件的副作用是什么,特别是并发I/O写操作.

我发现Log4j在高负载条件下死锁.

问题是OS(linux)对并发I/O文件写入有任何限制,还是Log4j处理这种并发?

如何监控任何I/O进程延迟(由于高负载)或发生任何死锁?

谢谢

BzH*_*BzH 3

由于没有人回答我的问题,

链接以某种方式帮助我解决了我的问题。

Log4j 串行写入文件和控制台。因此,当一个线程正在写入时,另一个想要写入的线程必须等待另一个线程完成。此外,如果另一端附加到 stdout 的任何内容没有耗尽它,则 stdout 可能会阻塞。

在unix中,有一个特殊的文件描述符,称为stdout. 当您在控制台中启动应用程序时,应用程序stdout将附加到控制台。您还可以重定向stdout到其他文件。ex: java Blah > /dev/null。您很可能stdout指向一个即将填满的文件。例如,管道是一个文件,如果另一端的程序没有耗尽管道,则写入管道的程序最终将被阻塞。