2014-04-03 31 views
2

你好我调试Jedis交谈亚马逊Elasticache的Redis 2.6.13Jedis块永远让连接到Amazon

我有Jedis暂时无法获取连接的麻烦。目前,我正在使用所有默认值,并且我看到,当我尝试获得连接时,它总是永远阻止。即此呼叫块

  Jedis jedis = jedisPool.getResource(); 

但是,如果我单独离开服务器一段时间,它似乎再次工作。这表明Jedis正在使用某些东西,并最终以较低的等级进行清理。

我相信我有一些问题,我的配置,但它在我的笔记本电脑正常工作与Redis的(2.6.10)

我发现了一个博客从2011年谈到有关配置,这有一个非常有趣的句子中间

http://biasedbit.com/redis-jedispool-configuration/ 

"The annoyance here is that in a JedisPool by default, connections will die of inactivity and no new ones will be spawned." 

我也看到了问题,指出Jedis有时会每次创建一个新的连接,并且不重用现有的连接。例如

https://groups.google.com/forum/#!topic/jedis_redis/H3FhLtwkDo8 

是否有人使用Jedis和Amazon Elasticache?它是如何为你工作的?你的配置是什么?

此外,没有人认识到上述问题。如何避免/修复它们?

谢谢 彼得

回答

3

这里有一个更新:

JedisConfig有maxTotal和了maxidle调整参数

JedisPoolConfig poolConfig = new JedisPoolConfig(); 
    // default 8 : Maximum active connections to Redis instance 
    poolConfig.setMaxTotal(maxTotal); 
    // default 8 : Maximum number of idle connections to Redis 
    poolConfig.setMaxIdle(maxIdle); 

Jedis显然是贪婪,将创建多个连接,甚至当它不必。

我将max设置为100,并运行3台服务器。

不幸的是,Amazon Redis实例似乎只有128个可用连接,所以我的服务器互相挨饿。

使用Amazon Elasticache控制台我能够看到连接数量逐渐增加,直到服务器重启为止