Druid连接池配置和运行状态指标含义记录

记录一下druid参数

Druid 连接池主要配置参数

参数名 默认值 说明
连接池管理
initialSize 0 初始化时建立的物理连接数
minIdle 0 最小空闲连接数
maxIdle 8 最大空闲连接数
maxActive 8 最大活跃连接数
maxWait -1(无限等待) 获取连接时最大等待时间(毫秒)
maxWaitThreadCount -1(无限等待) 设置允许的最大等待连接的应用线程数,当连接池中的连接全部被占用时,新的请求线程会进入等待队列,该参数限制了等待队列的最大长度
testOnBorrow false 申请连接时执行验证查询(影响性能)
testOnReturn false 归还连接时执行验证查询
testWhileIdle true 空闲时检查连接是否有效
timeBetweenEvictionRunsMillis 60000(1分钟) 空闲连接检查的间隔时间(毫秒)
minEvictableIdleTimeMillis 1800000(30分钟) 表示连接池中空闲连接的最小空闲时间(单位为毫秒)。如果连接的空闲时间超过这个值,并且连接池中的空闲连接数大于minIdle,则这些连接会被驱逐
maxEvictableIdleTimeMillis 25200000(7小时) 表示连接池中空闲连接的最大空闲时间(单位为毫秒)。如果连接的空闲时间超过这个值,无论连接池中的空闲连接数是否大于minIdle,这些连接都会被驱逐
性能优化
poolPreparedStatements false 是否缓存 PreparedStatement
maxPoolPreparedStatementPerConnectionSize 10 每个连接最多缓存的 PreparedStatement 数
sharePreparedStatements false 当设置为true时,Druid连接池会共享PreparedStatement对象。这意味着同一个PreparedStatement可以在不同的物理连接之间共享,需要谨慎使用
connectionProperties - 设置连接属性(如 druid.stat.mergeSql=true 合并相似 SQL)
高级配置
asyncInit false 是否异步初始化连接池(加快启动速度)
removeAbandoned false 当设置为true时,Druid连接池会自动清理长时间未被归还的连接,由removeAbandonedTimeout控制超时时间
removeAbandonedTimeout 300(秒) 如果连接的使用时间超过这个阈值,Druid会将其标记为遗弃连接
logAbandoned false 当设置为true时,Druid会记录被遗弃连接的详细信息,包括堆栈信息
keepAlive false 当设置为true时,连接池会定期对空闲连接执行“保活”操作,以确保这些连接仍然有效
keepAliveBetweenTimeMillis 120000(2分钟) 控制连接在空闲状态下,两次保活检测之间的时间间隔
failFast false 当设置为true时,如果连接池中的所有连接都被占用,新的请求会立即失败,而不是等待可用连接
useUnfairLock false 当设置为true时,Druid连接池会使用非公平锁来管理连接的获取和释放
notFullTimeoutRetryCount 0(不重试) 当尝试从连接池中获取连接时,如果连接池未满(即当前连接数小于maxActive),但获取连接超时,Druid会根据notFullTimeoutRetryCount的值进行重试
phyTimeoutMillis -1(不限制) 当物理连接的存活时间超过这个值时,连接会被强制销毁并重新创建
phyMaxUseCount -1(不限制) 当一个物理连接被使用的次数超过该值时,该连接会被销毁并重新创建
logDifferentThread true 是否记录不同线程使用同一个物理连接的日志
连接校验(一般不用配置)
validConnectionChecker - 检测连接可用性类,mysql默认MySqlValidConnectionChecker
validationQuery - 验证连接有效性的 SQL 语句(如 SELECT 1
validationQueryTimeout -1(不限) 验证查询的超时时间(秒)
exceptionSorter - 分析异常判断一个连接是否发生了不可恢复的异常,在数据库服务器重启、网络抖动、连接被服务器关闭等异常情况下,识别并剔除连接池中不可用的连接
连接配置(一般不用配置)
queryTimeout 0(无限制) sql执行的超时时间(秒)(Statement#setQueryTimeout)
transactionQueryTimeout 0(无限制) 事务中的sql执行的超时时间(秒)(Statement#setQueryTimeout)
loginTimeout - 登录超时时间,这是DriverManager#setLoginTimeout纬度的配置
connectTimeout 0(无限制) 创建物理连接时的超时设置
socketTimeout 0(无限制) 创建物理连接时的超时设置
defaultAutoCommit true 创建的连接,默认autocommit
defaultReadOnly - 创建的连接,默认readonly
defaultTransactionIsolation - 创建的连接,默认事务隔离级别
defaultCatalog - Connection#setCatalog,用于切换当前连接的默认数据库或模式

Druid 连接池运行状态指标

DruidDataSource#getStatData的输出含义

参数名 说明
WaitThreadCount 当前等待获取连接的线程数
NotEmptyWaitCount 获取连接时累计等待多少次
NotEmptyWaitMillis 获取连接时累计等待多长时间
PoolingCount 当前连接池中的数目
PoolingPeak 连接池中数目的峰值
PoolingPeakTime 连接池数目峰值出现的时间
ActiveCount 当前连接池中活跃连接数
ActivePeak 连接池中活跃连接数峰值
ActivePeakTime 活跃连接池峰值出现的时间
LogicConnectCount 产生的逻辑连接建立总数
LogicCloseCount 产生的逻辑连接关闭总数
LogicConnectErrorCount 产生的逻辑连接出错总数
PhysicalConnectCount 产生的物理连接建立总数
PhysicalCloseCount 产生的物理关闭总数
PhysicalConnectErrorCount 产生的物理连接失败总数
DiscardCount 校验连接失败丢弃连接次数
ExecuteCount sql执行数
PSCacheAccessCount PSCache访问总数
PSCacheHitCount PSCache命中次数
PSCacheMissCount PSCache不命中次数
StartTransactionCount 事务开始的个数
TransactionHistogram 事务运行时间分布,分布区间为[0-1 ms, 1-10 ms, 10-100 ms, 100-1 s, 1-10 s, 10-100 s, >100 s]
ConnectionHoldTimeHistogram 连接持有时间分布,分布区间为[0-1 ms, 1-10 ms, 10-100 ms, 100ms-1s, 1-10 s, 10-100 s, 100-1000 s, >1000 s]
ClobOpenCount 打开的CLOB(Character Large Object,字符大对象)对象的数量
BlobOpenCount 打开的BLOB(Binary Large Object,二进制大对象)对象的数量
KeepAliveCheckCount KeepAlive检测次数
PreparedStatementOpenCount 真实PreparedStatement打开次数
PreparedStatementClosedCount 真实PreparedStatement关闭次数
RecycleErrorCount 记录连接池回收连接时发生的错误次数
posted @   wuworker  阅读(177)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示