Jedis 在高并发情况下调用 redis 返回数据很慢,有遇到过吗?

2016-09-19 16:01:00 +08:00
 x537196

java 在高并发情况下调用 redis 返回数据很慢,一个命令执行 200+ms, 低并发正常情况下 10+ms ,有遇到过吗? 主要耗时就在 JedisPool.getResource()这个操作上

11060 次点击
所在节点    Java
17 条回复
xgfan
2016-09-19 16:25:08 +08:00
我猜一下,应该是有连接池的。
高并发下池满了,获取连接需要等待。时间就耗在这儿了。可以调一下最大连接数量试试。
x537196
2016-09-19 17:55:18 +08:00
@xgfan 最大连接数已经设置为无上限了
cvv
2016-09-19 21:18:59 +08:00
WhenExhaustedAction 怎么设的
rrfeng
2016-09-19 21:27:53 +08:00
JedisPool.getResource()
新建连接可能达到了某种隐形的限制。例如 socket 数量, fd , nofile 等等所以 poolsize 虽然没有上限,但是达到一定量之后自然就会资源不足。

先看看 pool 有多少连接,或者系统里 ss/netstat 看下程序一共有多少个 redis 连接。
fxmqs
2016-09-19 21:40:10 +08:00
@x537196 确实碰到过,个别请求 50 多 ms ,但大部分没问题,当时统计大概在 2%左右,因为不影响业务,所以没跟踪了。
9hills
2016-09-19 22:05:03 +08:00
做压测,然后观察各种指标。只有这个信息不太好判断。
zts1993
2016-09-19 22:17:55 +08:00
今天在 jedis 上发 issue 的是你吧。。。


我看到了。 JedisPool.getResource() 是因为你设置了 testOnBorrow 。这个会发一个 ping 然后 ping 卡住了。
卡住的原因还是 redis 阻塞了,比如大量 smemebers 或者 lrange 这样。

具体可以发一下 redis 的 slowlog 。看一下卡顿和长时间操作是否一致。
yonka
2016-09-20 09:55:36 +08:00
应该不是连接耗尽吧? redis 一个正常请求占用连接的时间应该在个位 ms ,你的高并发得有多少啊?
x537196
2016-09-20 10:06:13 +08:00
@cvv 这个应该是默认的
x537196
2016-09-20 10:08:01 +08:00
@rrfeng redis 连接数在 200 左右,高峰期到过 600 ,没有到过最大连接数
x537196
2016-09-20 10:14:22 +08:00
@zts1993 redis 是使用的阿里云的实例,只能找阿里的人看日志了,现在已经把列表类的 key 转到另一个实例,单键值的 key 已经转移到 memcached 了,现在只能各种原因排查了
x537196
2016-09-20 10:16:24 +08:00
@fxmqs 我这个波动比较大
x537196
2016-09-20 10:19:14 +08:00
@yonka redis 是没有问题的,就是 jedis 这边,可能是有哪个操作阻塞了,或者网络原因,导致了这个情况,现在排查中
xchange
2016-09-20 11:03:30 +08:00
@x537196 说不定是阿里云的问题,前天晚上我们的 redis cluster 挂了,然后昨天另外的 redis 实例部分 value 长度比较大的 key 取不出来……
Infernalzero
2016-09-20 12:11:12 +08:00
你都发现时网卡跑满那原因都很明显了,序列化后存储体积过大,网络拥塞了所以慢,压缩下再存吧
x537196
2016-09-20 12:42:41 +08:00
@Infernalzero 网卡跑满是大部分是其他业务的流量, redis 的很少
iminto
2016-10-03 18:06:06 +08:00
jedis 本身性能问题

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/307274

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX