Php

Memcache - 具有許多節點的分佈式環境中的問題

  • July 2, 2011

我快速瀏覽了其他類似標題的問題,沒有一個與我目前遇到的問題特別相似。

基本上,我們的多節點 memcached 環已經執行了兩年多,而且大部分都沒有問題。Memcache 安裝最近移至專用伺服器,容量增加了兩倍(2x 1GB 到 2x3GB)。起初,我們遇到了一些我認為是 php 庫如何與伺服器通信的問題,要麼是伺服器列表的排序問題,要麼是它們啟動不正確。

伺服器“似乎”工作正常,但密鑰似乎儲存在多個伺服器上,並且過期不會使該值的所有實例過期。

基本上,我們將散列機制從標準更改為一致,密鑰查找(和過期/獲取)的問題和一切似乎都恢復了正常。

然而,我在過去幾週一直在監視事情,並註意到第一台伺服器似乎比第二台伺服器被擊中很多很多次(PHP memcache 監控工具報告一個平均每秒1,200 次點擊,而第二個只是在500)。

誰能解釋一下:

  • 首先,任何關於上面發生的事情的想法,為什麼一台伺服器會在“分佈式”環境中獲得如此多的點擊

  • 其次,分佈式情況下memcache客戶端的推薦設置是什麼

    • 我是否使用一致的雜湊做正確的事情
    • 我應該使用故障轉移嗎?
    • 二進制儲存?;
    • 還是壓縮?
  • 重置/移動實時記憶體記憶體環的正確程序是什麼

我發現 memcached 是一個非常棒的工具,非常適合它的用途,但是實際的最佳實踐指南和有用的文件(很少有人詳細描述它)很少而且相差甚遠。如果我能對正在發生的事情有所了解,我肯定會將其發佈為技術文章供所有人查看(以在將來提供幫助),但我現在遇到了麻煩!

提前致謝

如果您的密鑰具有不相等的訪問模式,您將看到到每個 memcached 節點的流量不相等。例如,如果您有 2 個密鑰,其中一個a是每秒獲取/設置 500 次,另一個b是每秒獲取/設置 250 次,則包含a的節點的流量將是包含的節點的兩倍b

在我的例子中,我們有 8 個帶有幾千個鍵的 memcached 節點。其中一個鍵在高峰流量時執行大約 800 次獲取/秒,而幾乎所有其他鍵的執行速度都低於 1 次獲取/秒。具有忙鍵的 memcached 節點的流量明顯高於其他節點。

如果您想平衡每個 memcached 節點的流量,那麼您需要:

  • 使用您的鍵控玩遊戲,以確保您的忙鍵正確分佈。
  • 切換到使用 repcached 或 Membase 跨多個節點複製密鑰

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