Memcached 故障转移

Memcached 故障转移

我们配置了 2 个 memcached 服务器并使用 Eniym 客户端。当其中一个服务器宕机时,该服务器似乎被添加到 deadServers 列表 (ServerPool.cs) 中并尝试每 10 秒恢复一次服务器(我们已将 deadTimeOut 配置为 10 秒)。尝试连接到故障服务器会导致 TCP 超时,页面需要很长时间才能加载,从而导致糟糕的用户体验。

1) 解决此问题的标准方法是什么?有些帖子提到要将服务器从 deadServers 列表中移除。这样做可以吗?

2)建议的 deadTimeOut 设置是什么(我理解默认情况下它是 2 分钟,我们在实施中将其更改为 10 秒)

3) 我的理解是否正确,缓存数据不会在服务器 1 和服务器 2 之间复制?如果服务器 1 发生故障,那么它会转到数据库来获取这些值(并且它实际上不会检查服务器 2)?

非常感谢您的帮助。

答案1

  1. 作为一般规则,通常希望您接受缓存可能有或可能没有您想要的内容。
    • 这取决于具体情况,但听起来更高的时间可能会对你有好处。更高的时间(2-5 分钟)不会带来太大损失。
    • 是的。Memcache 通常会在服务器 2 上再次缓存这些值(从数据库获取后,因为服务器 1 的缓存不可用)。

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

相关内容