从游泳池获得连接 - 特使

时间:2018-06-15 10:51:30

标签: proxy http-status-code-503 connection-pool envoyproxy

我需要从池连接到上游连接,但偶尔会遇到503问题。我想知道这个

的根本原因

https://github.com/envoyproxy/envoy/blob/master/source/common/router/router.cc

Http::ConnectionPool::Instance* conn_pool = getConnPool();
  if (!conn_pool) {
    sendNoHealthyUpstreamResponse();
    return Http::FilterHeadersStatus::StopIteration;
  }

这是导致503的代码的一部分。我尝试使用while循环重试固定次数但仍然面临错误。 有人可以指导我找到根本原因或我如何处理这个问题吗?

编辑:我怀疑的一个可能原因是在特使方面经常发生排水。那么有没有办法可以控制排水发生的持续时间的drain_type?

我已按照此文档(https://www.envoyproxy.io/docs/envoy/latest/api-v1/listeners/listeners.html?highlight=draining%20modify_only)将drain_type从默认值更改为modify_only。

但面对这个错误:

error initializing configuration '/etc/envoy-config.json': JSON at lines 3-57 does not conform to schema.
 Invalid schema: #
 Schema violation: additionalProperties
 Offending document key: #/drain_type

1 个答案:

答案 0 :(得分:0)

我尝试过的一个解决方案是将drain_timeout增加到更大的值,例如20秒,而不是将默认值设置为5秒。这大大减少了我现在所达到的503的数量为2倍。另一方面仍然是未知的。即使这个设置有可能产生的副作用还有待探索正在解决目前的目的。 欢迎任何建议/意见/解决方案:)