Centos

Memcached 池 - 中斷導致響應時間延遲增加

  • February 18, 2015

我有多個記憶體伺服器,它們通過 Memcached::addServers() api 添加到 PHP 層的虛擬池中。在容錯測試期間,我注意到使其中一個 memcached 伺服器離線導致應用程序的響應時間增加到每個請求 3-6 秒,而通常每個請求需要 0.5-2 秒。

我已經按照這篇博文的建議實施了這些設置:

$memcached = new Memcached();
$memcached->setOption(Memcached::OPT_CONNECT_TIMEOUT, 10);
$memcached->setOption(Memcached::OPT_DISTRIBUTION, Memcached::DISTRIBUTION_CONSISTENT);
$memcached->setOption(Memcached::OPT_REMOVE_FAILED_SERVERS, true);
$memcached->setOption(Memcached::OPT_RETRY_TIMEOUT, 1);
$memcached->addServers($servers);

但是,這些設置似乎無法解決延遲增加的問題。解決此問題的唯一方法是將伺服器重新引入池中,然後滯後消失。顯然這不是一個理想的解決方案,因為我們可能需要 15 分鐘來解決生產中的問題(即可怕的凌晨 3 點頁面)。

在研究這個問題時,我確實遇到了這篇文章,它討論了 moxi 的使用,聽起來很有趣,但是在我將另一個層引入我們的應用程序之前,我想知道其他人是如何解決這些滯後問題的?

我最終安裝了twemproxy(Twitter 的 Memcached 代理),因為它會自動彈出無響應的主機。這個 api 解決了我的滯後問題。

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