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