连接池的常用参数详解
参数 默认值 描述
一、连接池队列参数
1、initialSize 0 初始化连接。连接池启动时创建的初始化连接数量。
2、maxActive 8 最大活动连接。连接池在同一时间能够分配的最大活动连接的数量。
3、maxIdle 8 最大空闲连接。连接池中容许保持空闲状态的最大连接数量,超过的空闲连接将被释放,如果设置为负数表示不限制
4、minIdle 0 最小空闲连接。连接池中容许保持空闲状态的最小连接数量,低于这个数量将创建新的连接,如果设置为0则不创建
5、maxWait 无限 最大等待时间。当没有可用连接时,连接池等待连接被归还的最大时间(以毫秒计数),超过时间则抛出异常,如果设置为-1表示无限等待
二、验证连接是否可用
1、validationQuery SQL语句,用于验证从连接池取出的连接,查询必须返回至少一行记录
2、testOnBorrow true 是否在池中取出连接前检验。若检验失败,则从池中去除连接并尝试取出另一个。
3、testOnReturn false 是否在归还连接前检验。
4、testWhileIdle false 连接是否在空闲连接回收器回收时(如果有)进行检验。如果检测失败,则连接将被从池中去除.
三、空闲回收器
1、timeBetweenEvictionRunsMillis -1 在空闲连接回收器线程运行期间休眠的时间值,以毫秒为单位.如果设置为非正数,则不运行空闲连接回收器线程
2、numTestsPerEvictionRun 3 在每次空闲连接回收器线程(如果有)运行时检查的连接数量
3、minEvictableIdleTimeMillis 1000 * 60 * 30 连接在池中保持空闲而不被空闲连接回收器线程(如果有)回收的最小时间值,单位毫秒
redis 连接池配置
1、maxActive: 最大连接数,-1表示不限。
2、maxIdle:控制一个pool最多有多少个状态为idle的jedis实例;
3、maxWait:获取一个实例,最大的等待时间,如果超过等待时间,则直接抛出JedisConnectionException;
4、whenExhaustedAction:连接分配完后采用的策略;默认有三种WHEN_EXHAUSTED_FAIL(表示无jedis实例时,直接抛出NoSuchElementException)、WHEN_EXHAUSTED_BLOCK(则表示阻塞住,或者达到maxWait时抛出JedisConnectionException)、WHEN_EXHAUSTED_GROW(则表示新建一个jedis实例,也就说设置的maxActive无用);
5、testOnBorrow:获取一个实例时,是否验证可用。
6、testOnReturn:在return给pool时,是否提前进行validate操作;
testWhileIdle:如果为true,表示有一个idle object evitor线程对idle object进行扫描,如果validate失败,此对象会被从pool中移除;这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义;
timeBetweenEvictionRunsMillis:表示idle object evitor两次扫描之间要sleep的毫秒数;
numTestsPerEvictionRun:表示idle obj
ect evitor每次扫描的最多的对象数;
minEvictableIdleTimeMillis:表示一个对象至少停留在idle状态的最短时间,然后才能被idle object evitor扫描并驱逐;这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义;
softMinEvictableIdleTimeMillis:在minEvictableIdleTimeMillis基础上,加入了至少minIdle个对象已经在pool里面了。如果为-1,evicted不会根据idle time驱逐任何对象。如果minEvictableIdleTimeMillis>0,则此项设置无意义,且只有在timeBetweenEvictionRunsMillis大于0时才有意义;
lifo:borrowObject返回对象时,是采用DEFAULT_LIFO(last in first out,即类似cache的最频繁使用队列),如果为False,则表示FIFO队列;
其中JedisPoolConfig对一些参数的默认设置如下:
testWhileIdle=true
minEvictableIdleTimeMills=60000
timeBetweenEvictionRunsMillis=30000
numTestsPerEvictionRun=-1