XMemcachedClientBuilder的使用问题,build一个以上client时阻塞

问题描述:

 MemcachedClientBuilder builder;
        MemcachedClient memcachedClient;
        builder = new XMemcachedClientBuilder(AddrUtil.getAddresses("localhost:11211"));
        builder.setFailureMode(true);
        builder.setConnectionPoolSize(32);
        try {
            String a = "123";
            memcachedClient = builder.build();
            memcachedClient.setWithNoReply("123", 3600, "aaa");
            logger.error("value:" + memcachedClient.get("123", 10000L).toString());
        }catch (Exception e){
            logger.error(e.getMessage());
        }

以上代码可以取出缓存并输出,但如果有A,B两个工程,里面都是这段代码,A工程启动后正常,B工程启动后,A,B都阻塞无法存取,此时memcached服务重启才能恢复。同一个工程里buid两个client也导致同样的问题。

解决方案:
把builder.setConnectionPoolSize(32);去掉或设小一些即可buid多个client。

问题猜想:
因为XMemcachedClientBuilder里是用连接池拿实例的,可能设置最大连接数后,两个工程相加的总连接数超出了memcached的最大连接数,但是用同一个builder也无法buid两个client,这种猜想好象不对。

希望对次比较熟悉的同学能解答一下,谢谢

http://blog.csdn.net/lgh1117/article/details/10497351