Memcached故障转移

我们configuration了2个memcached服务器并使用Eniym客户端。 当其中一台服务器closures时,看起来这个服务器被添加到了deadServers列表(ServerPool.cs)中,并且每10秒就会尝试重新启动一次服务器(我们configuration了deadTimeOut为10秒)。 尝试连接到发生故障的服务器会导致TCP超时,这些页面需要很长时间才能加载,从而导致用户体验不佳。

1)解决这个问题的标准方法是什么? 有一些关于从deadServers列表中删除服务器的post。 这样做可以吗?

2)什么是推荐的deadTimeOut设置(我的默认情况下是2分钟,我们已经改变了10秒)

3)我的理解是正确的,caching的数据不复制跨服务器1和服务器2? 如果服务器1closures,那么它会去数据库获取这些值(而不是真的检查Server2)?

任何帮助真的很感激。

  1. 作为一般规则,通常预期您只接受caching可能会或可能不会有你想要的。
    • 这取决于场景,但是听起来好像你可能从更高的场景中受益。 有更高的(2-5分钟)没有很大的损失。
    • 是。 Memcache通常会在服务器2上再次caching这些值(从数据库中获取后,因为服务器1的caching不可用)。

您可能还会降低用于重新连接到可能已死的服务器的TCP超时。