Java 21 生产迁移实战 ③:Virtual Threads 替换线程池——实测性能翻倍?
一、引言 "把线程池换成虚拟线程后,我们的 API 延迟降低了 85%,吞吐量提升了 4 倍。" 这不是空谈——这是我们在生产环境中真实的测试结果。 但故事并没有到此结束。当我们沉浸在性能提升的喜悦中时,数据库连接池突然成为了新的瓶颈。虚拟线程的高效率让连接池的消耗速度超出预期,大量请求因为获取不到数据库连接而超时。 今天,我们就来完整复盘这次迁移实战——从实验设计到结果分析,再到瓶颈解决。 二、对照实验设计 2.1 实验环境 项目配置 CPUIntel i9-13900K(24 核) 内存32GB DDR5 JDKOpenJDK 21.0.2(Temurin) Spring Boot3.2.5 数据库MySQL 8.0.33(本地 Docker) 连接池HikariCP 5.0.1 压测工具JMeter 5.6.2 2.2 测试场景 模拟一个典型的电商订单查询接口: 每个请求需要执行一次数据库查询(模拟 100ms 延迟) 并发数:10,000 持续时间:60 秒 数据库连接池大小:20 2.3 两组对比方案 方案 A:传统线程池 // 核心线程数:200,最大线程....