Memcached 池 - 中断导致响应时间延迟增加

Memcached 池 - 中断导致响应时间延迟增加

我有多个缓存服务器,它们通过 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 的使用,听起来很有趣,但在我继续在我们的应用程序中引入另一层之前,我想知道其他人是如何解决这些滞后问题的?

答案1

我最终安装了代理服务器(Twitter 的 Memcached 代理),因为它会自动弹出没有响应的主机。这个 API 解决了我的延迟问题。

相关内容