log4j2性能优化

背景:最近在做log4j升级到Log4j2的项目,在测试升级之后的性能时,被惊了一下,性能没有提升,反而下降了,赶紧研究了一下log4j2的相关配置,以下是研究结果。
 
1. 使用FileAppender的时候,配置若是ImmediateFlush=true,一旦有新日志写入,立马将日志写入到磁盘的文件中。当日志很多,这种频繁操作文件显然性能很低下。
 
2.不要使用Location相关属性,例如 C or $class, %F or %file, %l or %location, %L or %line, %M or %method ,大概降低 30到100倍。includeLocation要设置为false(默认为false,可以直接不设置)。
 
3.推荐使用RollingRandomAccessFile,大概可以视为RollingFileAppender的进化版,没有bufferedIO这个属性,对于RollingRandomAccessFile,缓存是固定开启的。fileName是实时写入的(未归档)文件名,filePattern则是归档文件的命名模式,因为开启了异步日志所以这里immediateFlush设置为false(不过好像不管它也无所谓),bufferSize缓冲区大小暂时默认(默认为8K),最后,TriggeringPolicy和RolloverStrategy是必须有的,没有显示定义就会采用默认的。
 
4.在大并发的条件下,需使用纯异步记日志或混合异步记日志,推荐增大 log4j2.asyncLoggerRingBufferSize 的值(默认为256*1024),设置时可以加在jvm启动的脚本里。下面例子里是两倍默认值。这个值是被log4j2依赖的disruptor.jar中的参数,log4j2的高性能异步记日志全是借助于它。
    
-Dlog4j2.asyncLoggerRingBufferSize = 524288

以上是一天的研究成果,还得接着扣,毕竟性能第一(狗头保命)。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值