我们有一个使用log4j的高速,高容量应用程序。通常我们一直在使用SyslogAppender,认为它是最轻的,最快的追加器。但是我们看到SYSLOG在高容量下的CPU利用率很高(因为SYSLOG conf中的过滤规则)。
我们可能想切换到使用FileAppender。问题是我们是否希望将此与log4j AsyncAppender结合使用以消除由于刷新(强制)到磁盘而导致的任何暂停?
(该应用程序对延迟非常敏感,因此我们希望最小化appender可能添加的任何延迟。)另外 - 我不确定SyslogAppender是否真的比FileAppender更快(无论如何(但这是我开始以来的事情) )。
对此的任何想法都将不胜感激。
答案 0 :(得分:6)
我肯定会使用AsyncAppender。
我已经看到低延迟应用程序几乎停止使用标准文件追加器。不可否认,他们在共享硬件和磁盘上使用(OS)虚拟机,因此一个虚拟机可以独占磁盘IO,并在尝试登录时停止其他虚拟机。
您还可以考虑记录到JMS和其他异步策略。