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 模式。

试了下,接口请求时,虽然能看到两段日志之间耗时较大,但是找不到是哪里慢。

思路 3:Arth

你可能感兴趣的:(【更新中...】项目中的那些事,spring,boot,java,SpringBoot性能优化,性能优化,第一次请求慢)