1. 背景
压测过程中优化线程池以后单机qps存在性能瓶颈,优化过程中发现默认线程池及日志对性能存在严重的影响所以引发了一系列对日志优化的整理
2.哪些场景可能导致性能问题
在任何系统中,日志都是非常重要的组成部分,它是反映系统运行情况的重要依据,也是排查问题时的必要线索。绝大多数人都认可日志的重要性,但是又有哪些场景可能导致性能问题?今天就让我们来聊聊Java日志性能那些事。
2.1 不合理的书写方法

如上3种写法,我相信大家或多或少都在项目代码中看到过,那么他们之前有区别呢,会对性能造成什么影响? 如果此时关闭 DEBUG 日志级别,差异就出现了
格式1 依然还是要执行字符串拼接,即使它不输出日志,属于浪费。
格式2 的缺点就是参数会提前做JSON序列化也产生性能损耗。
所以推荐格式3,新增日志开关,只有在执行时才会动态的拼接,关闭相应日志级别后,不会有性能损耗。
2.2 不合理的日志
尽量多的日志,能够把用户的请求串起来,更容易断定出问题的代码位置。由于当前分布式系统,且业务庞杂,任何日志的缺失对于程序员定位问题都是极大的障碍。所以要合理的打印日志,设置合理的日志级别

2.3 日志输出格式
位置信息 官网称作 Location Information,含义是当前这行日志是哪个类的哪个方法哪一行打印的。
可配置的模式有很多,具体见官网

本文探讨了Java日志在压测过程中的性能问题,包括不合理书写方法、过多日志和位置信息对性能的影响。作者提供了优化建议,如动态调整日志级别、避免无用日志、使用SLF4J占位符和新增日志开关等,展示了优化前后性能的显著提升。
最低0.47元/天 解锁文章
2259

被折叠的 条评论
为什么被折叠?



