问题描述
最近项目在做性能压测,框架使用的是 spring boot 2.1.2 + jedis 2.9.1,80个并发持续压测4-5分钟服务就假死,所有的请求就pending,查看服务日志没有任何异常,查看其它没有使用redis的接口都能正常请求。
查找问题思路
-
查看了一下redis的连接配置,都是正常够用的
-
再使用jstack看一下堆栈信息
发现很多WAITING的线程,再往下看都是redis的getResource方法导致的等待。
-
查看redis的源码
Jedis.java
@Override public void close() { if (dataSource != null) { //1 if (client.isBroken()) { this.dataSource.returnBrokenResource(this); } else { this.dataSource. returnResource(this)