
SpringBoot 的“约定优于配置”让开发变得极快但也容易让人忽视性能。很多项目上线后才发现接口响应慢、内存溢出、CPU 飙高。其实大部分性能问题都能通过一些简单的配置和技巧解决。下面这 10 个技巧都是我实战中验证过的个个实用。1. 用 Undertow 替换 TomcatTomcat 是 SpringBoot 默认的 Web 服务器但 Undertow 在并发场景下表现更好内存占用更低。只需排除 Tomcat引入 Undertowxml复制下载运行dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId exclusions exclusion groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-tomcat/artifactId /exclusion /exclusions /dependency dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-undertow/artifactId /dependency2. 调优数据库连接池HikariCP 是 SpringBoot 2.x 默认连接池性能极佳但默认配置偏保守。根据数据库承载能力调整yaml复制下载spring: datasource: hikari: maximum-pool-size: 20 minimum-idle: 5 connection-timeout: 30000 idle-timeout: 600000 max-lifetime: 1800000池子不是越大越好过大会导致数据库连接争抢。一般maximum-pool-size设为 CPU 核数 2 磁盘数。3. 开启二级缓存频繁读数据库是性能杀手。用 Spring Cache Redis 做缓存java复制下载Cacheable(value user, key #id) public User getUser(Long id) { ... }配合CacheEvict更新时清除。注意设置合理的 TTL避免脏数据。4. 异步处理非核心逻辑发短信、写日志、更新统计等操作没必要阻塞主流程。用Async加线程池java复制下载Async(taskExecutor) public void sendEmail(String to) { ... }自定义线程池避免使用默认的SimpleAsyncTaskExecutor每次创建新线程。5. 懒加载 BeanSpringBoot 默认启动时创建所有 Bean。如果项目大启动慢可以开启全局懒加载yaml复制下载spring: main: lazy-initialization: true或者对特定 Bean 加Lazy。注意懒加载可能把启动时的错误推迟到运行时要配合测试。6. 精简自动配置SpringBoot 自动配置了很多用不到的东西。启动时排除java复制下载SpringBootApplication(exclude {DataSourceAutoConfiguration.class})或者用spring.autoconfigure.exclude属性。减少 Bean 加载提升启动速度。7. JVM 调优默认 JVM 参数往往不适合生产。建议text复制下载-Xms2g -Xmx2g -XX:UseG1GC -XX:MaxGCPauseMillis200堆内存设为相同值避免动态调整G1 适合大堆。用jstat -gcutil观察 GC 频率。8. 异步日志 合理级别同步日志会阻塞业务线程。用 Logback 异步 Appenderxml复制下载运行appender nameASYNC classch.qos.logback.classic.AsyncAppender queueSize512/queueSize appender-ref refFILE/ /appender生产环境日志级别设为INFO或WARN避免DEBUG输出海量日志。9. 使用 WebFlux 应对高并发 IO如果业务是 IO 密集型如网关、爬虫传统 Servlet 线程池容易耗尽。改用 Spring WebFlux Reactorjava复制下载GetMapping(/users) public FluxUser getUsers() { ... }注意WebFlux 不适合 CPU 密集或阻塞调用否则适得其反。10. 监控与压测用数据说话优化不能靠猜。引入 Actuator Micrometer Prometheus监控 QPS、响应时间、GC、线程池。再用 JMeter 或 wrk 压测找到瓶颈。推荐 Arthas 在线诊断trace、watch命令能快速定位慢方法。总结性能优化不是一蹴而就而是持续迭代。上面 10 个技巧从 Web 服务器、连接池、缓存、异步、JVM 到监控覆盖了最常见的瓶颈点。但记住没有银弹先测量再优化。盲目调参可能带来新问题。希望这些技巧能帮你少踩坑让 SpringBoot 跑得更快更稳。