博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Jedis的配置和优化
阅读量:6702 次
发布时间:2019-06-25

本文共 1222 字,大约阅读时间需要 4 分钟。

hot3.png

Jedis客户端连接池配置

参数名:maxTotal

含义:资源池最大连接数 【默认值:8】

使用建议:需要考虑以下几点

1.业务希望的Redis并发量

2.客户端执行命令时间

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

4.资源开销:例如虽然希望控制空闲连接,但是不希望因为连接池的频繁释放创建连接造成不必要的开销。

举例:

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

业务需要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

转载于:https://my.oschina.net/u/3371837/blog/1785545

你可能感兴趣的文章
原生js实现tab栏切换功能
查看>>
四、Clion搭建FFmpeg开发环境
查看>>
爬虫:如何判断一个网页已经更新?
查看>>
一. spark 安装部署
查看>>
windows下使用Anaconda安装python3的方式
查看>>
深入理解函数节流与函数防抖
查看>>
探索Bitmap使用姿势
查看>>
程序员【超实用】面试问题
查看>>
解决github访问慢或pod install或pod update慢方案
查看>>
前端性能优化(JS/CSS优化,SEO优化)
查看>>
[译]GraphQL:你需要知道的一切
查看>>
数组与对象、字符串遍历方法大全
查看>>
ARP地址解析协议、DNS域名系统和交换机、路由器、网关的概念
查看>>
微信小程序自定义事件
查看>>
对Vue组件通信的理解
查看>>
JS 作用域 var与let 区别
查看>>
情人节撸一个表白页面
查看>>
Java ClassLoader分析
查看>>
小程序无限层级路由方案
查看>>
Android studio 安装Plugins
查看>>