MemcachedClient4Java

  项目中用到了cenwenchu的MemcachedClient4Java ,版本号是2.5.1版。

  在使用的过程中发现如果memcached服务器重启,客户端会访问失败并抛出"no socket to availble"的异常,失败几次之后又可以正常访问了。

  原因是服务器重启的时候,客户端连接池里原有的socket连接失效了,因此使用的时候才抛出异常,抛出异常之后失效的socket被销毁,建立一个新的连接,以后再用的时候就又可以正常访问了。

  客户端建立新的socket连接时,如果发现服务器连接不上,会把当前连接池里该服务器的连接都销毁掉。

  它的与连接相关的代码主要是SockIOPool,里面有一个维护线程。维护线程实现的功能比较简单,主要是查看连接池里的可用连接数,如果数量小于配置的最小连接数就创建新连接,如果大于最大连接数就销毁空闲的连接,另外还要从连接池里移出死连接。

我修改了它获取连接时异常处理的代码,如果使用前检查发现连接不可用就直接销毁这个连接,然后建立一个新的连接。这样就可以在服务器重启之后立即正常访问而不需要再等失败几次之后才可以。

注意要在配置文件里开启它的连接池维护线程已经检查连接可用性的功能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值