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 |
记录连接池回收连接时发生的错误次数 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下