2、JedisPool配置参数分析
maxWaitMillis:表示当borrow一个jedis实例时,从连接池获取连接最大的等待时间,连接池满的情况下,会一直阻塞,如果超过等待时间,则直接抛出JedisConnectionException,默认-1为无限制;
blockWhenExhausted:连接池已满且无空闲连接时,是否等待获取其它连接,默认true,如果false,maxWaitMillis参数不生效。
maxActive: 链接池中最大连接数.
maxTotal:链接池中最大连接数. jedis2.4之后使用这个属性
maxIdle:连接池中最大空闲的连接数
minIdle:连接池中最少空闲的连接数
soTimeout: 返回值的超时时间
connectionTimeout:连接超时时间,底层的Socket超时时间,在底层创建连接的时候才会使用,默认2000。
timeout:如果只设定timeout那么soTimeout和connectionTimeout都会设定一样的值
三、分析与猜测:
两种情况会超时:
当连接池满的情况下,会一直阻塞,如果超过等待时间,则直接抛出JedisConnectionException。
当连接池未满s的情况下,创建新连接的时候,如果创建时间超过2000ms也会抛出异常。
但是因为最大空闲连接数配置了20,最小连接数配置了200,所以连接池都是满的状态。
三、配置建议:
1、maxIdle配置值与maxActive相同或相近。
2、当高并发时,blockWhenExhausted配置为false,防止线程阻塞。