add*_*990 8 java tomcat redis jedis amazon-elasticache
我在tomcat web应用程序中使用Jedis连接到Elascticache Redis节点.该应用程序在白天被数百名用户使用.我不确定这是否正常,但每当我使用cloudwatch指标检查当前连接数时,我看到当前连接增加而不会下降.
这是我的Jedis池配置:
public static JedisPool getPool(){
if(pool == null){
JedisPoolConfig config = new JedisPoolConfig();
config.setMinIdle(5);
config.setMaxIdle(35);
config.setMaxTotal(1500);
config.setMaxWaitMillis(3000);
config.setTestOnBorrow(true);
config.setTestWhileIdle(true);
pool = new JedisPool(config, PropertiesManager.getInstance().getRedisServer());
}
return pool;
}
Run Code Online (Sandbox Code Playgroud)
这就是我总是使用池连接来执行redis命令的方法:
Jedis jedis = JedisUtil.getPool().getResource();
try{
//Redis commands
}
catch(JedisException e){
e.printStackTrace();
throw e;
}finally{
if (jedis != null) JedisUtil.getPool().returnResource(jedis);
}
Run Code Online (Sandbox Code Playgroud)
使用这种配置,计数目前超过200.我是否遗漏了应该丢弃或杀死未使用连接的内容?我将maxIdle设置为35,我预计当流量非常低时,计数会下降到35,但这种情况从未发生过.
小智 9
我们遇到了同样的问题.在进一步调查之后,我们遇到了这个问题(来自redis官方文档 - http://redis.io/topics/clients):
默认情况下,如果客户端空闲了很多秒,则Redis的最新版本不会关闭与客户端的连接:连接将永远保持打开状态.
默认情况下,aws提供的超时值为0.因此,即使客户端初始化的连接已关闭,使用redis实例初始化的任何连接也将由redis保留.
在aws中创建一个新的缓存参数策略,其超时不等于0,那么你应该是好的
| 归档时间: |
|
| 查看次数: |
3897 次 |
| 最近记录: |