我正在努力弄清楚网络超时以及如何为给定请求的每个跳转设置它们。为简单起见,我没有查看连接超时、读取超时和写入超时的细分,而是假设“超时”表示“从收到第一个数据包到发送最后一个数据包的最大允许总时间(对于客户端而言反之亦然)。假设我的请求流中有以下跳转:
(client) --> (AWS ALB) --> (nginx) --> (server)
...假设我的服务器设置为10秒后超时。
我的问题是:每跳的有效超时设置是多少?
// A
(client, 13s) --> (AWS ALB, 12s) --> (nginx, 11s) --> (server, 10s)
或者
// B
(client, 7s) --> (AWS ALB, 8s) --> (nginx, 9s) --> (server, 10s)
或者(C)其他的?
显然,我对你的建议背后的逻辑也很感兴趣。
答案1
如果你正在查看硬超时(你没有说明目的),则每个处理阶段都有较少的比前一个方法节省了时间。所以基本上,A 是正确的方法。
但是,客户端到 AWSALB 的路径超出了您的控制范围,并且可能相对较长/较慢。每步一秒似乎很慷慨,所以没有问题。但是,如果您将其减少到每步 50 毫秒或 100 毫秒,则第一步将需要更多分配。