【问题标题】:monitor log4j behaviour under load监控负载下的 log4j 行为
【发布时间】:2015-06-14 11:50:27
【问题描述】:
我想在访问不同页面的高负载会话下测试我的 J2EE 应用程序。
这个 Web 应用程序使用 Log4J 来记录一堆错误、警告和信息。
我想测试这种负载对写入日志文件的副作用是什么,尤其是并发 I/O 写入操作。
我发现Log4j deadlock under high load conditions。
问题是操作系统(linux)是否对并发 I/O 文件写入有任何限制,或者 Log4j 是否处理这种并发?
如何监控任何 I/O 进程延迟(由于高负载)或发生任何死锁?
谢谢
【问题讨论】:
标签:
logging
concurrency
io
log4j
【解决方案1】:
由于没有人回答我的问题,
这个link 以某种方式帮助我解决了我的问题。
Log4j 串行写入文件和控制台。因此,当一个线程正在写入另一个想要写入的线程时,必须等到另一个线程完成。此外,如果另一端附加到它的任何东西没有耗尽它,stdout 可以阻塞。
在 unix 中有一个特殊的文件描述符称为stdout。当您在控制台中启动应用程序时,stdout 将附加到控制台。您还可以将stdout 重定向到其他文件。 ex: java Blah > /dev/null。很有可能你有stdout 指向一个正在填满的文件。例如管道是一个文件,如果另一端的程序没有耗尽管道,那么写入管道的程序最终将阻塞。