Logback 输出日志性能优化

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

问题描述:
下图中可看出logback的日志输出占了64%的cpu消耗,目标就是优化它!
Logback 输出日志性能优化_第1张图片
优化方案:
1. 这部分写日志的代码写了一些报文数据,确实是比较大的字符串。 先禁掉控制台输出,生产环境也不需要控制台输出,写日志文件即可。
配置中去掉控制台输出
< root level ="INFO" >
< appender-ref ref ="ASYNC_ROLLING_FILE" />
root >
优化后的结果,915ms直接变为76ms,优化效果相当显著

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

你可能感兴趣的:(SpringBoot)