SpringBoot 框架第 1 次接口调用慢
文章目录
- 背景
- 分析
- 思路 1:DeepSeek 分析
- 思路 2:日志分析
- 思路 3:Arthas 分析
- 下载 Arthas
- 启动 Arthas
- trace 调用耗时分析
- Controller 调用耗时
- Service 调用分析
- ServiceImpl 耗时分析
- IService 耗时分析
- BaseMapper 耗时分析
- debug 执行链路
- MyBatisMapperProxy 解读
- 解决
- 思路 1:预热 MyBatisPlus
- 思路 2:预热 DispatcherServlet
- 完整案例
- 优化代码
- 优化效果
- 参考
背景
项目技术框架:Spring Boot 2.7.17 + Druid 1.2.24 + MyBatisPlus 3.5.4。
😂 存在的问题:第 1 次 接口查询比较慢,后面的接口调用速度正常。
比如,某个分页查询接口,第 1 次调用耗时 600ms,第 2 次及之后耗时 150ms。
分析
分析前提:SpringBoot 连接的外部组件,比如 Redis、MySQL 尽量使用本地连接,减少因为网络波动产生的影响。
思路 1:DeepSeek 分析
DeepSeek 各种搜索,各种配置修改,但是总感觉没有对症下药。
摸索了很久,没有啥用,根本找不到症结在哪里。
思路 2:日志分析
添加 debug: true
配置到 yml 配置文件中,将程序改为 debug 模式。
试了下,接口请求时,虽然能看到两段日志之间耗时较大,但是找不到是哪里慢。