这请求超时模块有一个最小数据速率的设置,对于主体来说,它看起来(包括默认注释)像这样:
# Wait max 10 seconds for the first byte of the request body (if any)
# From then, require a minimum data rate of 500 bytes/s
RequestReadTimeout body=10,minrate=500
这个数据速率是如何计算的?如果客户端遇到一个小问题,它能有多大的宽容度?例如,当执行一个相当大的请求(比如发布一个文件?)时,我可以想象,虽然总体速度会比这个高得多,但在某个时候,速率可能达不到要求。它是按秒来衡量的吗?还是某种移动窗口?
答案1
发现文档实际上对此很清楚:
来自https://httpd.apache.org/docs/2.2/mod/mod_reqtimeout.html
允许至少 10 秒的时间接收请求主体。如果客户端发送数据,则每收到 1000 字节,超时时间将增加 1 秒,超时时间没有上限(LimitRequestBody 间接给出的限制除外):
从中我们可以看出,对于每个“minrate”字节数,我们都会多获得一秒。因此“rate”不是“speed”(为此您应该定义一个窗口等)。
你有最初的body
几秒,如果你想用这些术语来谈论的话,这就是你的第一个窗口。每个minrate
字节数增加一秒,所以只要你有时间,你就可以稍微降低速度。