很多SpringBoot项目接口响应慢开发者第一反应是“代码逻辑有问题”但排查半天发现逻辑没问题。其实真正的瓶颈往往藏在配置和细节里。同样的业务代码优化前后接口耗时可能相差10倍。下面这7个细节每一个都能带来显著的性能提升。1. 数据库连接池别再用默认配置SpringBoot默认使用HikariCP但默认连接数只有10。高并发下大量请求排队等连接接口自然慢。根据业务QPS调整yaml复制下载spring: datasource: hikari: maximum-pool-size: 50 minimum-idle: 10 connection-timeout: 3000 idle-timeout: 600000 max-lifetime: 1800000连接池大小不是越大越好一般建议CPU核数 2 磁盘数。配合监控调整接口吞吐量能提升数倍。2. 缓存把重复查询挡在数据库之前很多接口每次请求都查数据库但数据几分钟甚至几小时才变一次。加一层缓存效果立竿见影。本地缓存用Caffeine分布式缓存用Redis。java复制下载Cacheable(value user, key #id) public User getUser(Long id) { return userRepository.findById(id).orElse(null); }简单一个注解命中缓存时耗时从几十毫秒降到几毫秒。注意设置合理的过期时间避免脏数据。3. 异步处理别让主线程干等发送短信、记录日志、调用外部接口这些操作不需要阻塞主流程。用Async丢到独立线程池执行。java复制下载Async(taskExecutor) public void sendEmail(String to) { ... }同时配置线程池避免默认的SimpleAsyncTaskExecutor每次创建新线程yaml复制下载spring: task: execution: pool: core-size: 10 max-size: 50 queue-capacity: 200主接口响应时间立刻下降。4. SQL与索引最容易被忽视的瓶颈一个没加索引的查询在百万级数据表上可能扫全表耗时几秒。检查慢查询日志给WHERE、JOIN、ORDER BY字段加索引。同时避免N1查询用JOIN一次取回而不是循环查库。java复制下载// 错误N1 for (Order o : orders) { o.setUser(userRepository.findById(o.getUserId())); } // 正确一次查询 Query(SELECT o FROM Order o JOIN FETCH o.user) ListOrder findAllWithUser();SQL优化带来的提升往往比代码优化大得多。5. HTTP压缩减少传输体积返回JSON数据较大时开启Gzip压缩传输体积能减少70%以上。SpringBoot一行配置搞定yaml复制下载server: compression: enabled: true mime-types: application/json,text/html,text/xml min-response-size: 1024客户端支持时自动压缩带宽和加载时间双降。6. Tomcat线程池匹配并发量SpringBoot内嵌Tomcat默认最大线程200但队列容量无限。高并发下请求堆积响应变慢。根据压测结果调整yaml复制下载server: tomcat: threads: max: 500 min-spare: 50 accept-count: 200 max-connections: 10000合理设置能避免请求被拒绝或长时间等待。7. JVM调优给GC减负默认JVM堆内存可能只有几百MB频繁GC导致接口抖动。启动时指定bash复制下载java -Xms2g -Xmx2g -XX:UseG1GC -XX:MaxGCPauseMillis100 -jar app.jarG1垃圾回收器适合大堆内存停顿时间可控。堆内存根据服务器配置调整一般不超过物理内存的70%。总结这7个细节——连接池、缓存、异步、SQL索引、HTTP压缩、Tomcat线程池、JVM调优——每一个都不复杂但组合起来能让接口快10倍。性能优化不是玄学而是把每一处浪费掐掉。从今天起检查你的项目逐个优化效果立竿见影。