1、产生原因:客户端去redis服务器拿连接(代码描述的是租用对象borrowObject)的时候,池中无可用连接,即池中所有连接被占用,且在等待时候设定的超时时间后还没拿到时,报出此异常。
2、解决办法:调整JedisPoolConfig中maxActive为适合自己系统的阀值。
<bean id="dataJedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
<property name="maxActive" value="300"/>
<property name="maxIdle" value="100"/>
<property name="maxWait" value="10000"/>
<property name="testOnBorrow" value="true"/>
</bean>
查看redis集群本身连接数是不是过多
[redis@ mongostandby ~]$ redis-cli -c -p 10023 info clients
# Clients
connected_clients:2845
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0
[redis@ mongostandby ~]$ redis-cli -c -p 10023 config get maxclients
1) "maxclients"
2) "100000"
对比连接数 connected_clients:2845 和最大连接数 maxclients 发现连接数正常