分布式缓存服务 DCS-优化Jedis连接池:JedisPool参数说明

时间:2024-10-24 19:37:38

JedisPool参数说明

Jedis连接是连接池中JedisPool管理的资源,JedisPool保证资源在一个可控范围内,并保障线程安全。使用合理的GenericObjectPoolConfig配置能够提升Redis的服务性能,降低资源开销。表1表2提供了一些重要参数的说明及配置建议。

表1 资源设置与使用相关参数

参数

说明

默认值

建议

maxTotal

资源池中的最大连接数。

8

请参见关键参数配置建议

maxIdle

资源池允许的最大空闲连接数。

8

请参见关键参数配置建议

minIdle

资源池允许的最小空闲连接数。

0

请参见关键参数配置建议

blockWhenExhausted

当资源池用尽后,调用者是否要等待。

  • true:等待。
  • false:不等待。

只有当值为true时,设置的maxWaitMillis才会生效。

true

建议使用默认值。

maxWaitMillis

当资源池连接用尽后,调用者的最大等待时间(单位:毫秒)。

值为-1表示一直等待。

-1

建议设置具体的最大等待时间。

testOnBorrow

向资源池借用连接时是否做连接有效性检测(ping)。检测到的无效连接将会被移除。

  • true:校验。
  • false:不校验。

false

业务量很大时候建议设置为false,减少一次ping的开销。

testOnReturn

向资源池归还连接时是否做连接有效性检测(ping)。检测到无效连接将会被移除。

  • true:校验。
  • false:不校验。

false

业务量很大时候建议设置为false,减少一次ping的开销。

jmxEnabled

是否开启JMX监控。

  • true:开启。
  • false:不开启。

true

建议开启,请注意应用本身也需要开启。

空闲Jedis对象检测由表2中的参数组合完成。

表2 空闲资源检测相关参数

名称

说明

默认值

建议

testWhileIdle

是否在空闲资源监测时通过ping命令监测连接有效性,无效连接将被销毁。

false

true

timeBetweenEvictionRunsMillis

空闲资源的检测周期(单位:毫秒)。

值为-1表示不检测。

-1

建议设置,周期自行选择,也可以默认也可以使用下方JedisPoolConfig 中的配置。

minEvictableIdleTimeMillis

资源池中资源的最小空闲时间(单位:毫秒),达到此值后空闲资源将被移除。

1,800,000(即30分钟)

可根据自身业务决定,一般默认值即可,也可以考虑使用下方JeidsPoolConfig中的配置。

numTestsPerEvictionRun

做空闲资源检测时,每次检测资源的个数。

3

可根据自身应用连接数进行微调,设置为-1时,表示对所有连接做空闲监测。

为了方便使用,Jedis提供了JedisPoolConfig,它继承了GenericObjectPoolConfig在空闲检测上的一些设置。

public class JedisPoolConfig extends GenericObjectPoolConfig {
  public JedisPoolConfig() {
    setTestWhileIdle(true);
    setMinEvictableIdleTimeMillis(60000);
    setTimeBetweenEvictionRunsMillis(30000);
    setNumTestsPerEvictionRun(-1);
    }}

可以在org.apache.commons.pool2.impl.BaseObjectPoolConfig中查看全部默认值。

support.huaweicloud.com/bestpractice-dcs/dcs_05_0009.html