redis链接池优化
现象
现象很明显,新建连接数很高,但是每秒的链接数却不高。我们知道链接的建立是很耗性能的,所以优化的目标是降低新建链接数。
我们明明用了链接池了,为什么还会有这么多新建的链接呢?
看看当前链接池的配置:
参数 | 值 | 说明 |
---|---|---|
MinEvictableIdleTimeMillis | 60000 | 逐出连接的最小空闲时间 |
NumTestsPerEvictionRun | -1 | 每次逐出检查时 逐出的最大数目 |
MinIdlePerKey | 0 | 每个key的最小空闲连接数 |
MaxIdlePerKey | 8 | 每个key的最大空闲连接数 |
MaxTotalPerKey | 140 | 每个key的最大连接数 |
我们看到 每个key的最大空闲连接数
这个配置项的值为8 即当空闲链接超过8时,会强制销毁一些链接。这可能是导致问题的原因。我们适当加大一下参数的值
参数 | 值 | 说明 |
---|---|---|
MinEvictableIdleTimeMillis | 60000 | 逐出连接的最小空闲时间 |
NumTestsPerEvictionRun | -1 | 每次逐出检查时 逐出的最大数目 |
MinIdlePerKey | 0 | 每个key的最小空闲连接数 |
MaxIdlePerKey | 20 |
每个key的最大空闲连接数 |
MaxTotalPerKey | 140 | 每个key的最大连接数 |
结果如下:
可以看到新建连接数有了明显的下降,但是还没有达到预期,接着加大值
参数 | 值 | 说明 |
---|---|---|
MinEvictableIdleTimeMillis | 60000 | 逐出连接的最小空闲时间 |
NumTestsPerEvictionRun | -1 | 每次逐出检查时 逐出的最大数目 |
MinIdlePerKey | 0 | 每个key的最小空闲连接数 |
MaxIdlePerKey | 40 |
每个key的最大空闲连接数 |
MaxTotalPerKey | 140 | 每个key的最大连接数 |
如图 基本解决了问题
可见根据情况适当调整一下连接池的参数是很有必要的