【问题排查】easyexcel日志打印Empty row!

问题原因

日志打印​​I/O 操作开销​(如 Log4j 的 FileAppender)会阻塞业务线程,直到日志写入完成,导致接口响应变慢

问题描述

  1. 在线上环境,客户反馈导入一个不到1MB的excel文件,耗时将近5分钟。

问题排查

  1. 发现日志文件有打印超多以下日志:
    WARN DefaultAnalysisEventProcessor:41 - Empty row!

  2. 和客户拿到文件分析后认定是客户导入的文件中存在大量的空行。导致的上述日志疯狂打印,每一行是空都会打印一条,导致接口耗时变慢。

  3. 源码寻找,如图:

  4. 发现这行日志打印需满足日志等级是debug级别的才会打印。嗨,恰巧,由于项目年代久远我司线上环境日志级别是debug,导致了上述问题的发生。

问题解决

修改日志级别为info 避免日志打印。
Log4j日志配置修改方法

复制代码
log4j.logger.com.alibaba.excel.read.processor.DefaultAnalysisEventProcessor=INFO

spring boot项目,日志级别修改方式

复制代码
logging:
  level:
    com.alibaba.excel.read.processor.DefaultAnalysisEventProcessor: INFO
相关推荐
阿珊和她的猫1 小时前
v-scale-scree: 根据屏幕尺寸缩放内容
开发语言·前端·javascript
fouryears_234174 小时前
Flutter InheritedWidget 详解:从生命周期到数据流动的完整解析
开发语言·flutter·客户端·dart
我好喜欢你~4 小时前
C#---StopWatch类
开发语言·c#
桦说编程6 小时前
Java 中如何创建不可变类型
java·后端·函数式编程
lifallen6 小时前
Java Stream sort算子实现:SortedOps
java·开发语言
IT毕设实战小研6 小时前
基于Spring Boot 4s店车辆管理系统 租车管理系统 停车位管理系统 智慧车辆管理系统
java·开发语言·spring boot·后端·spring·毕业设计·课程设计
没有bug.的程序员6 小时前
JVM 总览与运行原理:深入Java虚拟机的核心引擎
java·jvm·python·虚拟机
甄超锋7 小时前
Java ArrayList的介绍及用法
java·windows·spring boot·python·spring·spring cloud·tomcat
cui__OaO7 小时前
Linux软件编程--线程
linux·开发语言·线程·互斥锁·死锁·信号量·嵌入式学习
阿华的代码王国7 小时前
【Android】RecyclerView复用CheckBox的异常状态
android·xml·java·前端·后端