重新设置在请求前是否覆盖 HTTP/1.1 闲置连接关闭/重复使用比赛?
我正在测试HTTP/1.1上游服务器之间 关闭一个闲置的保持式连接 和特使重用这个连接来提出新的请求之间的竞争。
在我的测试中,重置:重置'可收回这些故障,而重置:重置-先取而后取'不会引发任何重置。
我想澄清,这是预期的限制,还是我的复制人缺少一个必要条件。
相关讨论:
- Envoy #10007 互联网档案馆的存檔,存档日期2011-12-21.
- Envoy PR#35074
- 伊斯蒂奥#51704
□ 环境
- 特使:`1.39.1'
- 提交:`b579d07d3ad7ee11d32b105e91a5a39ad24718d7'
- 莱纳
- 一名工人:`-货币1'
- 请求路径:`curl-特使-当地PythonHTTP/1.1服务器'
- 一个静态上游终点,平正文字HTTP/1.1
- 没有额外的上游HTTP过滤器
- 客户重试已禁用
应用程序行为
Python服务器:
- 返回一个完整的 " 200 " 反应,并有一个正确的 " Content-Length " 。
- 保持连接畅通,不发送 " 连接:关闭 " 。
- 在答复书写后 " 200ms " 的不活动之后关闭连接。
- 当另一个请求到达时取消闲置的计时器,并在发送下个响应后启动新的计时器.
- 特使上游配置
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢? 键入 extension protocol 选项: 备选: "@type":type.googleapis.com/envoy.extensions.upstreams.http.v3.Http 议定书选项 常见 http protocol options: 闲置超时: 3s 明确 http 配置 : http protocol options:
QQ 路由配置
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
路径 :
组: “ 输入 {} 8080} ”
重试策略( T):
重试: 在请求前重置
数值( R): 1□再现.
我发送请求的睡眠间隔范围从180ms'到200ms'不等,以`1ms'递增表示:
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢? URL='http://127.0.0.11:15006/idle-close?idle ms=200' (中文(简体) ).
用于((i=1;i<=1000;i++));
卷起 -q -- noproxy '*" --http1.1 -- retrich 0
-- 连接超时 2 -- 最大时速 5
-s -o / dev/null \ \ \ \ \
-H"X -请求 -ID:闲置-race -$i"?
-W"seq=$i code http code" 持续时间 时间 total n"?
"乌拉"
睡眠 ms=美元(180+(一-1)% 21) printf -v sleep seconds '0.%03d' "$sleep ms" 页面存档备份,存于互联网档案馆 睡个好觉 已执行
`/idle-close'终点由上述测试服务器实施。
每次卷曲引用都会产生新的下游联系. 特使独立管理上游连接再利用. 访问日志中重复的上游本地地址表明上游连接正在被再利用.
睡眠值是相近的;它们不计算卷曲起动、连接建立或调度间接费用。
□ 观察行为
重审政策
|-|-|-.
`503 UC ' 答复
" 重置 " , 重试一次 . . . .
`在请求前重置 ' ,保留`503 UC ' 答复;否
. . . . . . .内容来源: envoyproxy/envoy