Dot-Net

Memcached 故障轉移

  • April 12, 2010

我們配置了 2 個 memcached 伺服器並使用 Eniym 客戶端。當其中一台伺服器關閉時,該伺服器似乎被添加到 deadServers 列表 (ServerPool.cs) 並嘗試每 10 秒恢復一次伺服器(我們已將 deadTimeOut 配置為 10 秒)。嘗試連接到失敗的伺服器會導致 TCP 超時,頁面需要很長時間才能載入,從而導致糟糕的使用者體驗。

1)解決這個問題的標準方法是什麼?有一些關於從 deadServers 列表中刪除伺服器的文章。這樣做可以嗎?

  1. 推薦的 deadTimeOut 設置是什麼(我理解預設為 2 分鐘,我們在實現中將其更改為 10 秒)

  2. 我是否正確理解記憶體數據不會在伺服器 1 和伺服器 2 之間複製?如果伺服器 1 關閉,那麼它會去數據庫獲取這些值(並且它並沒有真正檢查伺服器 2)?

非常感謝任何幫助。

  1. 作為一般規則,通常期望您只接受記憶體可能有也可能沒有您想要的內容。
  • 這取決於場景,但聽起來你可能會從更高的場景中受益。更高(2-5分鐘)並沒有太大的損失。
  • 是的。Memcache 通常會在伺服器 2 上再次記憶體這些值(從數據庫中獲取後,因為伺服器 1 的記憶體不可用)。

您可能還降低了用於重新連接到可能已死的伺服器的 TCP 超時。

引用自:https://serverfault.com/questions/82952