暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

数据库连接池配置综述

原创 YanLang 2023-06-04
253


本文对 ZDAL 参数、Druid 参数、DBCP 参数、C3P0 参数以及 JDBC 参数进行概述,更详细更多的连接池信息在后续章节详细讲解。

数据源主要的几个参数

参数含义说明ZDAL 参数Druid 参数DBCP 参数C3P0 参数
初始化连接数连接池初始化时建立连接数。prefill=true 初始化到 minConninitialSize(0)initialSize(0)initialPoolSize(3)
最小连接数最小可使用连接数,这个会让连接池日常一直保留着这么多个链接。minConn(0)minIdle(0)minIdle(0)minPoolSize(3)
最大连接数最大可使用连接数,超过这个连接池会抛连接池已满异常。maxConn(10)maxActive(8)maxActive(8)maxActive(8)
链接空闲超时时间设置链接空闲时间一段时间不用时,连接池主动断开链接。MySQL 默认 8 小时断开链接,主备切换时链接会变成脏连接。如果没有这个机制,可能会导致请求失败。云上 OceanBase SLB 超时时间 15 分钟,可以将超时时间设置为 12 分钟。idleTimeoutMinutes(30min)minEvictableIdleTimeMillis(30min)minEvictableIdleTimeMillis(30min) 需要设置 timeBetweenEvictionRunsMillis(-1) > 0 才会生效,该参数控制异步检查周期maxIdleTime(0 表示不超时)
连接池获取链接的超时时间如果设置太大的话,链接池满了会导致应用响应太慢。blockingTimeoutMillis(500ms)maxWait(-1 表示不超时)maxWaitMillis(-1 表示不超时)checkoutTimeout(0 表示不超时)
连接获取不释放超时时间超时这个时间的话,连接一直没有放回连接池会被直接销毁掉。可以防止连接泄露,但是会影响事务使用时间限制。removeAbandonedTimeoutMillis(300s)removeAbandonedTimeout(300s)

JDBC 重要的几个参数,一定需要设置。均可以设置到连接池的 ConnectionProperties 中,或者 JdbcUrl 上。具体如下:

参数说明默认值
socketTimeout网络读超时时间,如果不设置默认是 0,使用 OS 默认超时时间5000ms
connectTimeout链接建立超时时间,如果不设置默认是 0,使用 OS 默认超时时间500ms

连接池设置建议

  • 管控台日常 min 保持两个连接即可,具体根据业务并发及事务时间来调整。

  • 设置连接空闲超时时间 ,推荐 30 分钟。

    MySQL 默认 8 小时连接主动断开,客户端无法感知,导致存在脏连接。连接池可以通过心跳、testOnBorrow 等机制来校验连接是否存活,当超过这个时间连接没有使用直接断开。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论