log4j高并发下写日志出现性能瓶颈问题

   一大早就收到了报警,一个活动订单接口报查询慢

 

   可以看到中间突然开始慢下来,方法很简单,就是订单表单表查个数据然后返回,索引也正常,查看慢日志的链路信息

 

 

   发现耗时主要在日志上   查看打印日志的代码

 

   可以看到打印日志的地方有加锁,并会锁住当前日志打印类,(如果additive为true的话,则会一直找链路的parent,处于根部的parent竞争肯定最为激烈),在高并发的情况下,使用同步锁的方式很大概率会产生性能问题,如果磁盘性能不足或者因为其他原因产生了随机写导致性能降低,写入时间增加则请求会被大面积阻塞。

  解决方案:目前应急方案先重启服务实例解决(重启大法好),后续引入log4j2的异步写入解决高并发下日志写入的问题

  贴一个某项目某接口日志改为异步后的耗时变化

 

posted @ 2022-09-20 11:22  雨落寒沙  阅读(923)  评论(1)    收藏  举报