【问题排查】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
相关推荐
小灰灰搞电子4 小时前
Rust+Slint 实现动态消息提示框源码分享
开发语言·后端·rust
魏 无羡4 小时前
webclient
java·webclient
神仙别闹5 小时前
基于 C++ 实现两个有序链表序列的交集
java·c++·链表
传奇开心果编程5 小时前
【Rust入门知识点学与练】第21课:Trait 进阶 Advanced Traits
开发语言·学习·rust
新时代牛马5 小时前
字符设备驱动完整篇:从 cdev_add、file_operations 到chrdev_open 与排障
开发语言·python
swordbob5 小时前
ReentrantLock 与 AQS 完整学习手册
java·开发语言
m0_587383006 小时前
全民健身解决方案软件开发实战:从架构设计到落地指南
java·spring boot·spring·架构·需求分析
白山编程大哥6 小时前
Java OutputStreamWriter 详解:从字符到字节的桥梁
java·开发语言·python
shmily麻瓜小菜鸡7 小时前
JavaScript / TypeScript 易踩坑知识点 —— 异步编程类
开发语言·javascript·typescript
一技安身7 小时前
【信创】Docker‑Compose V2 两种离线部署(独立模式、插件模式)简易教程
java·docker·eureka