You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring嵌入式Tomcat数据源性能远低于外部Tomcat问题排查与解决

问题表现

在使用EclipseLink JPA搭建Spring与MySQL的连接时,遇到异常性能差异:

  • 同一个读取大量实体的密集型接口,在外部独立Tomcat运行仅耗时800ms
  • 切换到嵌入式Tomcat运行时,耗时飙升至17秒
  • 数据库连接数差异明显:嵌入式Tomcat占用20个连接,外部Tomcat仅用10个

已尝试的无效操作

最初怀疑是环境配置差异,尝试以下操作均无改善:

  • 将嵌入式Tomcat版本调整为与外部完全一致
  • 复制外部Tomcat的所有配置到嵌入式环境
  • 禁用EmbeddedServletContainerCustomizer的reloadable属性

根因定位

通过主动触发事务异常并对比两边日志,最终发现:嵌入式Tomcat未正确加载HikariCP配置,默认使用了低效的数据源实现,导致性能雪崩。

解决方案

改用HikariCP的标准编程式配置,确保嵌入式Tomcat能正确识别并启用高性能连接池,示例代码如下:

@Bean
public DataSource dataSource() {
    HikariConfig hikariConfig = new HikariConfig();
    hikariConfig.setJdbcUrl("jdbc:mysql://localhost:3306/your_database");
    hikariConfig.setUsername("db_user");
    hikariConfig.setPassword("db_pass");
    hikariConfig.setMaximumPoolSize(10); // 与外部Tomcat统一连接池大小
    hikariConfig.setDriverClassName("com.mysql.cj.jdbc.Driver");
    // 可按需添加连接超时、空闲超时等HikariCP优化参数
    return new HikariDataSource(hikariConfig);
}

配置完成后,嵌入式Tomcat的性能恢复至与外部Tomcat一致的水平。

内容的提问来源于stack exchange,提问作者vrivon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 15:49:50