logback提升性能之异步写入日志

笔者负责的一个集成接口平台的应用,其业务功能并不复杂,但是要重点考虑接口的性能。
在进行过异步数据库写入、第三方代码调优、报文解析调优后,基本上已经无可优化性能的代码了。但是在JProfiler的监控里面又发现了logback日志的可优化空间。

问题描述:
下图中可看出logback的日志输出占了64%的cpu消耗,目标就是优化它!

优化方案:
1. 这部分写日志的代码写了一些报文数据,确实是比较大的字符串。先禁掉控制台输出,生产环境也不需要控制台输出,写日志文件即可。
配置中去掉控制台输出
<rootlevel="INFO">
<!--<appender-ref ref="STDOUT"/>-->
<appender-refref="ASYNC_ROLLING_FILE"/>
</root>
优化后的结果,915ms直接变为76ms,优化效果相当显著

2. 可能这时有人会说了,“你控制台禁了,日志文件又禁不了,不还是慢啊!”这话很有道理,但是logback有个好东东,日志文件异步写入
配置如下:
<appendername="ASYNC_ROLLING_FILE"class="ch.qos.logback.classic.AsyncAppender">
<appender-refref="ROLLING_FILE"/>
</appender>
<rootlevel="INFO">
<appender-refref="ASYNC_ROLLING_FILE"/>
</root>
所以在上面的性能监控里面就看不到文件写入的性能消耗了

猜你喜欢

转载自blog.csdn.net/ajax_yan/article/details/80519008