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

问题:H2数据库搭配Tomcat JDBC连接池达上限后无法回收连接

嵌入式H2数据库连接池配置分析与补充建议

嘿,我来帮你梳理下这套嵌入式H2+连接池的配置,顺便把那个没写完的配置项讲清楚:

现有配置项解读

先拆解下你当前配置里每个参数的作用:

  • h2.datasource.min-idle=10:连接池会始终保持至少10个空闲连接,保证系统随时有可用连接待命
  • h2.datasource.initial-size=10:连接池启动时就创建10个连接,和最小空闲数一致,避免启动初期的连接创建开销
  • h2.datasource.max-active=200:这是连接池允许的最大并发连接数,用来控制数据库的连接负载上限
  • h2.datasource.max-age=600000:连接的最长存活时间是10分钟,超过这个时间的连接会被自动销毁重建,避免长期闲置的连接出现异常
  • h2.datasource.max-wait=3000:当所有连接都被占用时,获取连接的请求最多等待3秒,超时会抛出连接获取失败的异常
  • h2.datasource.min-evictable-idle-time-millis=60000:空闲连接只要闲置超过1分钟,就会被连接池纳入回收候选名单
  • h2.datasource.remove-abandoned=true:开启了遗弃连接自动回收功能,针对那些长时间没被归还的连接
  • h2.datasource.remove-abandoned-timeout=60:如果一个连接被借出后60秒都没归还,就会被判定为"遗弃"并强制回收
  • h2.datasource.log-abandoned=true:会记录被回收的遗弃连接信息,方便你排查代码里的连接泄漏问题

关于未完成的abandonWhenPercentageFull配置

这个参数是用来优化遗弃连接回收逻辑的,它的作用是:只有当连接池的活跃连接数占最大活跃数的比例达到设定值时,才触发遗弃连接的回收。这样可以避免在连接池还很空闲的时候就频繁执行回收操作,节省资源。

它的完整配置格式是:

h2.datasource.abandonWhenPercentageFull=80

这里的数值是0-100的整数,比如设为80的话,当活跃连接数达到200的80%(也就是160个)时,才会启动remove-abandoned的回收机制。

如果不配置这个参数,默认只要开了remove-abandoned=true,不管连接池忙不忙,都会定时检查并回收遗弃连接。结合你当前的max-active=200,建议可以设为70-80,既不会错过连接泄漏的回收,也不会在空闲时做无用功。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:12:35