Memcached Pool – Outtage导致响应时间延迟增加

我有多个caching服务器通过Memcached :: addServers()api添加到PHP层的虚拟池中。 在容错testing期间,我注意到,使一个memcached服务器离线导致应用程序的响应时间增加到每个请求3-6秒,通常每个请求需要0.5-2秒。

根据这篇博文的build议,我已经实现了这些设置:

$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); 

但是,这些设置看起来并不能解决滞后问题。 解决问题的唯一方法是将服务器重新引入池中,然后消失。 显然这不是一个理想的解决scheme,因为解决生产问题可能需要15分钟(即可怕的上午3点)。

在研究这个问题的时候,我碰到过这个post ,里面讨论了使用moxi,听起来很有趣,但是在我介绍另外一个应用之前,我想知道别人是如何解决这些滞后问题的?

我最终安装了twemproxy (Twitter的Memcached代理),因为它会自动popup无响应的主机。 这api解决了我的滞后问题。