首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Spymemcached和连接失败

Spymemcached和连接失败
EN

Stack Overflow用户
提问于 2014-03-11 17:30:53
回答 1查看 6.2K关注 0票数 8

我认为Spymemcached会尝试在连接丢失时重新建立到服务器的连接。

但是我看到了一些不同的东西,我想知道我误解了什么,或者我做错了什么。下面是一些示例代码:

代码语言:javascript
运行
复制
 MemcachedClient c=new MemcachedClient(AddrUtil.getAddresses("server:11211"));
while(true)
try {
    System.out.println(c.get("hatsts"));
    Thread.sleep(10000);
} catch(Exception e) {
    e.printStackTrace();
}

它最初运行时没有问题。然后我拔掉网络插头。随后,客户端检测到网络故障并抛出以下异常:

代码语言:javascript
运行
复制
net.spy.memcached.OperationTimeoutException: Timeout waiting for value

但是,当我重新建立网络时,即使在5分钟之后,客户端也不会恢复并继续抛出异常。我尝试了SpyMemcached 2.10.6和2.9.0。

我遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-12 06:23:52

这里的问题是,由于您拉动了网络电缆,客户端上的tcp套接字仍然认为连接是有效的。不同操作系统的tcp保持存活时间不同,最高可达30分钟。因此,应用程序(在本例中是Spymemcached)没有被tcp层通知连接不再有效,因此Spymemcached不尝试重新连接。

Spymemcached检测这种情况的方法是计算连续操作超时的数量。我最后一次检查默认值是99。一旦这许多操作超时,Spymemcached将重新连接。如果要将此值设置为其他值,则可以在ConnectionFactory中更改该值。有一个名为getContinuousTimeout()的函数,它是Spymemcached默认获取99的地方。您可以使用ConnectionFactory构建自己的ConnectionFactoryBuilder。

希望这是足够的信息来回答你的问题,让你朝着正确的方向前进。如果不让我知道,我可以补充一些更多的细节。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22332203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档