1. 概述
1.1 版本
报表服务器版本 | 功能变动 |
---|---|
10.0.18 |
|
11.0.2 | 高级设置布局优化 |
11.0.23 | 增加 fetchsize 参数配置 |
11.0.24 | 优化平台数据连接中关于「连接校验」和「保活」相关的配置项 |
1.2 功能简介
本文将介绍数据连接高级设置的配置项中各参数的意义。
2. 具体介绍
在连接 FineReport 时,用户可以在连接页面进行一些高级设置,平台和设计器都可以设置。
2.1 设计器高级设置
设计器设置页面如下图所示:
常用设置
名称 | druid学名 | 默认值 | 含义 |
---|---|---|---|
最大活动连接数 | maxActive | 50 | 连接池在同一时间能够分配的最大活动连接的数量 |
获取连接前检验 | testOnBorrow | 是 | 申请连接时执行 validationQuery 检测连接是否有效 |
空闲连接可用性定期检查 | keepAlive | 是 | 检查到需要留下的连接保证其可用 |
校验语句 | validationQuery | 默认语句 | 用来检测连接是否有效的 SQL 语句,要求是一个查询语句,常用select 'x' 。用户可自定义该语句。 |
最大等待时间 | maxWait | 10000 | 获取连接时最大等待时间,单位毫秒 |
不太常用的连接池属性(如无特殊场景不建议修改)
名称 | druid学名 | 默认值 | 含义 |
---|---|---|---|
初始化连接数 | initialSize | 0 | 连接池初始化时建立物理连接的个数 |
最小空闲连接数 | minIdle | 0 | 连接池中保持的最小空闲连接数量 |
归还连接前校验 | testOnReturn | 否 | 归还连接时执行validationQuery检测连接是否有效 |
开启空闲回收器校验 | testWhileIdle | 否 | 指明连接是否被空闲连接回收器(如果有)进行检验,如果检测失败,则连接将被从池中去除 |
空闲连接回收器休眠时间 | timeBetweenEvictionRunsMillis | -1 | 在空闲连接回收器线程运行期间休眠的时间值,以毫秒为单位 |
空闲连接回收检查数 | numTestPerEvictionRun | 3 | 用于指定在每次空闲连接回收运行时要测试的连接数量 |
保持空闲最小时间值 | minEvictableIdleTimeMillis | 1800s | 连接保持空闲而不被驱逐的最小时间 |
2.2 平台高级设置
常用连接池属性
名称 | druid学名 | 默认值 | 含义 |
---|---|---|---|
最大活动连接数 | maxActive | 50 | 连接池在同一时间能够分配的最大活动连接的数量 |
获取连接前检验 | testOnBorrow | 是 | 申请连接时执行 validationQuery 检测连接是否有效 |
空闲连接可用性定期检查 | keepAlive | 是 | 检查到需要留下的连接保证其可用 |
校验语句 | validationQuery | 默认语句 | 用来检测连接是否有效的 SQL 语句,要求是一个查询语句,常用select 'x' 。用户可自定义该语句。 |
最大等待时间 | maxWait | 10000 | 获取连接时最大等待时间,单位毫秒 |
「更多设置」中不太常用的连接池属性(如无特殊场景不建议修改)
名称 | druid学名 | 默认值 | 含义 |
---|---|---|---|
初始化连接数 | initialSize | 0 | 连接池初始化时建立物理连接的个数 |
最小空闲连接数 | minIdle | 0 | 连接池中保持的最小空闲连接数量 |
归还连接前校验 | testOnReturn | 否 | 归还连接时执行validationQuery检测连接是否有效 |
获取连接时空闲连接可用性校验 | testWhiledle | 否 | 指明连接是否被空闲连接回收器(如果有)进行校验,如果校验失败,则连接将被从池中去除 |
空闲连接回收器工作时间间隔 | timeBetweenEvictionRunsMillis | 60000ms(60s) | 该参数用于指定连接池中的空闲连接检测和清理线程运行的时间间隔,单位为毫秒。 |
空闲连接回收检查数 | numTestPerEvictionRun | 3 | 指定在每次空闲连接回收运行时要测试的连接数量 |
空闲连接回收时间阈值 | minEvictableIdleTimesMillis | 1800s | 如果一个连接在连接池中空闲时间超过了阈值,并且连接数超过了「最小空闲连接数」,那么该连接就会被从连接池中移除 |
空闲连接强制回收时间阈值 | maxEvictableIdleTimeMillis | 25200s(7h) | 一个连接在连接池中空闲的时间超出了该阈值,会被从连接池中移除 |
空闲连接可用性定期检查时间阈值 | keepAliveBetweenTimeMillis | 120000ms(2min) | 空闲连接的保持存活时间,可以确保在空闲一段时间后连接不会被意外关闭 |
最大活动连接数设置超过数据库中的连接数目,只能按照数据库中的连接数目为准,如想调至最大,则也要调整数据库中的连接数目,参考文档 连接池满问题 中的解决方案。
fetchsize 设置
fetchSize 参数是用于控制从数据库中获取数据的批处理大小的设置。较小的 fetchSize 值会减少每次数据库查询的内存消耗,但可能需要更多的数据库往返来获取完整的结果集;较大的 fetchSize 值可以减少数据库往返次数,但会增加内存使用量。可以根据你的需求通过设置 fetchSize 参数值,来优化数据库查询性能。
若参数值 ≤ 0(例如:-20)则表示不开启 fetchsize 参数。
1)Oracle、DB2、Postgre 这三种数据库必须设置 fetchsize 参数,所以若设置了≤0 的参数值,会自动分别被替换为 128、50、10000。
2)其他数据库默认情况下不开启 fetchsize 参数。
用户也可在设计器中,对「Oracle、DB2、Postgre」数据连接设置 fetchsize。可输入 1~1,000,000 中的任意数值,若为空则表明不配置此项参数。
3. 注意事项
如果访问模板时,报连接超时、等待状态,警告如下所示:
警告:Cannot get a connection, pool error Timeout waiting for idle object
at com.fr.third.org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:114)
at com.fr.third.org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
at com.fr.data.pool.MemoryConnection.create(Unknown Source)
at com.fr.data.impl.JDBCDatabaseConnection.createConnection(Unknown Source)
则需要把相应连接数调大。