【问题标题】:Twitter - twemproxy - memcached - Retry not working as expectedTwitter - twemproxy - memcached - 重试未按预期工作
【发布时间】:2015-11-02 21:50:38
【问题描述】:

简单设置:

  • 1 个节点运行 twemproxy (vcache:22122)
  • 2 个运行 memcached (vcache-1, vcache-2) 的节点都在监听 11211

我有以下 twemproxy 配置:

default:
  auto_eject_hosts: true
  distribution: ketama
  hash: fnv1a_64
  listen: 0.0.0.0:22122
  server_failure_limit: 1
  server_retry_timeout: 600000 # 600sec, 10m
  timeout: 100
  servers:
    - vcache-1:11211:1
    - vcache-2:11211:1

twemproxy 节点可以解析所有主机名。作为测试的一部分,我删除了 vcache-2。理论上,每次尝试与 vcache:22122 交互时,twemproxy 都会联系池中的服务器以促进尝试。但是,如果其中一个缓存节点关闭,则 twemproxy 应该将其从池中“自动弹出”,因此后续请求不会失败。

由应用层来确定使用 vcache:22122 的接口尝试失败是否是由于基础架构问题,如果是,请重试。但是我发现在重试时,正在使用相同的失败服务器,因此后续尝试不会传递给已知良好的缓存节点(在本例中为 vcache-1),它们仍被传递给弹出的缓存节点(vcache -2)。

这是尝试重试的 php 代码 sn-p:

....

// $this is a Memcached object with vcache:22122 in the server list

$retryCount = 0;

do {

    $status = $this->set($key, $value, $expiry);

    if (Memcached::RES_SUCCESS === $this->getResultCode()) {

        return true;
    }


} while (++$retryCount < 3);

return false;

-- 更新--

在 Github 上打开的问题链接以获取更多信息:Issue #427

【问题讨论】:

    标签: php caching memcached twemproxy


    【解决方案1】:

    我看不出您的配置有什么问题。如您所知,重要设置已到位:

    default:
      auto_eject_hosts: true
      server_failure_limit: 1
    

    文档表明连接超时可能是一个问题。

    仅依赖客户端超时会产生不利影响,即原始请求在客户端到代理连接上超时,但在代理到服务器连接上仍处于未决和未完成状态。当客户端重试原始请求时,这种情况会进一步恶化。

    您的 PHP 脚本是否在 twemproxy 第一次尝试失败并从池中删除服务器之前关闭连接并重试?也许在 twemproxy 中添加一个timeout 值低于 比 PHP 中使用的连接超时解决了这个问题。

    从您在 Github 上的讨论来看,虽然这听起来像是对健康检查的支持,也许还有自动弹出,但在 twemproxy 中并不稳定。如果您正在构建旧包,您可能会更好地找到一个已经稳定一段时间的包。 mcrouter(和interesting article)合适吗?

    【讨论】:

    • 我尝试了各种排列。我取消了 memcached 对象的设置,添加了一个睡眠,然后重新实例化了该对象。但仍然没有运气。我很确定我调整了超时设置,但它不在 OP 中,我需要检查我的笔记。我会更新的。
    • 我在 OP 中更新了配置,我确实将超时设置为 100(毫秒)。至少应该通过第三次尝试。
    【解决方案2】:

    【讨论】:

    • 太棒了,我去看看。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多