【问题标题】:Jedis blocks forever getting connection to Amazon绝地武士永远阻止与亚马逊的连接
【发布时间】:2014-05-15 19:50:30
【问题描述】:

您好,我正在调试 Jedis 与 Amazon Elasticache Redis 2.6.13 对话

我遇到了 Jedis 无法建立连接的问题。目前,我正在使用所有默认值,并且我看到当我尝试建立连接时它总是永远阻塞。 IE。此调用阻塞

            Jedis jedis = jedisPool.getResource();

但是,如果我将服务器单独放置一段时间,它似乎又可以工作了。这表明某些东西正在被 Jedis 使用并最终被较低级别清理。

我认为我的配置有问题,但它在我的笔记本电脑 (2.6.10) 上可以正常使用 Redis

发现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 结合使用?它如何为您工作?你的配置是什么?

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

谢谢 彼得

【问题讨论】:

    标签: java amazon-web-services redis jedis


    【解决方案1】:

    这里是更新:

    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 显然很贪婪,并且会创建这么多连接,即使它没有必要这样做。

    我将最大值设置为 100 并运行 3 个服务器。

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

    使用 Amazon Elasticache 控制台,我能够看到连接数在服务器重新启动之前逐渐增加

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多