我们有一个高速、大容量的应用程序,它正在使用 log4j。通常我们一直在使用 SyslogAppender,认为它是重量最轻、速度最快的附加程序。但是我们看到 SYSLOG 在高容量下的 CPU 使用率很高(因为 SYSLOG conf 中的过滤器规则)。
我们可能想切换到使用 FileAppender。问题是我们是否要将它与 log4j AsyncAppender 结合使用以消除由于刷新(强制)到磁盘而导致的任何暂停?
(该应用程序对延迟非常敏感,因此我们希望将附加程序可能添加的任何延迟最小化。)此外 - 我不确定 SyslogAppender 是否真的比 FileAppender 更快(但自从我开始以来就是这样).
如有任何想法,我们将不胜感激。
最佳答案
我肯定会使用 AsyncAppender。
我已经看到低延迟应用程序几乎停止使用标准文件附加程序。不可否认,他们在共享硬件和磁盘上使用 (OS)VM,因此一个 VM 可以独占磁盘 IO,并在尝试记录时让其他 VM 停止。
您还可以考虑记录到 JMS 和其他异步策略。
关于java - Log4j AsyncAppender,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7350847/