![最大 http 响应延迟是多少?](https://linux22.com/image/685527/%E6%9C%80%E5%A4%A7%20http%20%E5%93%8D%E5%BA%94%E5%BB%B6%E8%BF%9F%E6%98%AF%E5%A4%9A%E5%B0%91%EF%BC%9F.png)
我正在尝试弄清楚将使用 HTTP 调用另一台服务器来检索结果的服务器放在哪里。我似乎找不到任何定义最大响应时间的 HTTP 定义,尽管我模糊地记得是 1800 毫秒。
有人知道这个定义在哪里吗,或者有关于延迟时间的相对权威的来源吗?
答案1
似乎没有为此编写的 RFC!但是主要的 Web 服务器提供了一些默认值。
互联网信息服务: 连接超时;
HTTP.sys Timer_EntityBody 计时器已过期。连接在请求实体主体到达之前已过期。当请求具有实体主体时,HTTP API 将打开 Timer_EntityBody 计时器。最初,此计时器的限制设置为 connectionTimeout 值。每次在此请求上收到另一个数据指示时,HTTP API 都会重置计时器,以便为连接提供更多在 connectionTimeout 属性中指定的分钟数。
<system.applicationHost>
<sites>
<siteDefaults>
**<limits connectionTimeout="00:02:00" />**
</siteDefaults>
</sites>
</system.applicationHost>
默认值:header=20-40,MinRate=500 body=20,MinRate=500
允许 10 秒接收包括标头在内的请求,并允许 30 秒接收请求正文:
RequestReadTimeout 标头=10 正文=30
允许至少 10 秒的时间接收请求主体。如果客户端发送数据,则每收到 1000 字节,超时时间将增加 1 秒,超时时间没有上限(LimitRequestBody 间接给出的限制除外):
RequestReadTimeout 主体 = 10,MinRate = 1000
允许至少 10 秒的时间来接收包括标头在内的请求。如果客户端发送数据,则每收到 500 字节,超时时间增加 1 秒。但包括标头在内的请求的接收时间不得超过 30 秒:
RequestReadTimeout 标头 = 10-30,MinRate = 500
通常,服务器应该同时配置 header 和 body 超时。如果对 http 和 https 虚拟主机使用通用配置,则超时不应设置得太低:
RequestReadTimeout 标头 = 20-40,MinRate = 500 正文 = 20,MinRate = 500
編輯:
如果你指的是客户端;那么它就是编码的。根据选择的功能;读取缓冲区可以在这些情况下返回:
读取文件:
- 如果已调用 listen,且连接处于待处理状态,则 accept 将会成功。
- 数据可供读取(如果启用了 SO_OOBINLINE,则包括 OOB 数据)。
- 连接已关闭/重置/终止。
这意味着在 select 的调用之间,只要远程连接没有断开,select 就不会返回任何内容并且会等待直到您定义的值来关闭客户端的连接。