1. Redis Server 配置检查 : redis.cnf ,确定 Redis配置无问题
- timeout :配置连接空闲1800秒(半小时)后释放
- tcp-keepalive : ack心跳,60秒检测连接是否还存在,存在则继续连接,如果不存在就释放。
2. Jedis连接池配置(Jedis依赖3.9.0)
- MAX_ACTIVE : 64
- MAX_IDEL : 16
- MIN_IDEL : 8
3. 测试用例
Jmeter 500线程,get/set/hget/hset 基本使用,持续一周
4. 测试结果
Jedis 连接池配置 : maxTotal 64, 服务配置最大连接数1w,结果增长到 7k,马上溢出
- 检查客户端连接情况 info clients
- 检查测试Java进程端口情况 netstat -nap | grep 3360(进程号) | grep .174:6379
- 检查进程链接详情
- Java进程Debug输出情况
输出代码:
jedisShardedPool.getNumActive()
jedisShardedPool.getNumIdle()
jedisShardedPool.getNumWaiters()
5. 结论
持续排查问题点,确定连接持续增长的原因