Jedis的配置和优化

Jedis客户端链接池配置

参数名:maxTotal并发

含义:资源池最大链接数 【默认值:8】高并发

使用建议:须要考虑如下几点spa

1.业务但愿的Redis并发量资源

2.客户端执行命令时间get

3.Redis资源:例如应用个数(客户端)* maxTotal 不能超过Redis服务端的最大链接数(config get maxclients)it

4.资源开销:例如虽然但愿控制空闲链接,可是不但愿由于链接池的频繁释放建立链接形成没必要要的开销。test

举例:监控

命令平均执行时间0.1ms = 0.001scli

业务须要50000 QPS配置

maxTotal理论值 = 0.001 * 50000 = 50个。实际值要偏大一些。

参数名:maxIdle

含义:资源池容许最大的空闲链接数 【默认值:8】

使用建议:建议跟maxTotal设置的值同样,这样能够减小建立新链接的开销

参数名:minIdle

含义:资源池确保最少空闲链接数 【默认值:0】

使用建议:建议第一次开启的时候预热(初始化一个值),减小第一次启动后的新链接开销

参数名:jmxEnabled

含义:是否开启jmx监控,可用于监控资源使用状态 【默认值:true】

使用建议:开启

参数名:blockWhenExhausted

含义:当资源池用尽后,调用者是否要等待。只有当为true时,配置的maxWaitMillis参数才会生效 【默认值:true】

使用建议:建议先使用默认值,但这个也要看状况,若是并发量大,能够直接设置false,即每次请求资源时,若是链接资源不够,立刻new个新的

参数名:maxWaitMillis

含义:当资源池链接用尽后,调用者最大等待时间(单位为毫秒) 【默认-1,表示永不超时】

使用建议:不建议使用默认值,再高并发环境下,获取资源不能hand在一个没有超时时间的地方,具体设置根据实际场景 如设置1000即为等待1秒。

参数名:testOnBorrow、testOnReturn

含义:这两个参数是说,客户端向链接池借用或归还时,是否会在内部进行有效性检测(ping),无效的资源将被移除 【默认值:false】

使用建议:建议false,在高并发场景下,由于这样无形给每次增长了两次ping操做,对QPS有影响,若是不是高并发环境,能够考虑开启,或者本身来检测。

链接池常见问题

没法从链接池中获取链接(超时)

链接池中资源耗尽(最大链接maxTotal和最大空闲链接maxIdle设置不等)

解决思路:

1.慢查询阻塞:池子链接都被hang住。

2.资源参数不合理:例如QPS高,池子小。

3.链接泄露(没有close()):也就是没有归还链接,能够用client list、netstat观察链接的一个增加状况,最重要的是try...catch...finally

相关文章
相关标签/搜索