在文章中https://support.microsoft.com/en-us/help/4491420/define-thresholds-on-the-number-of-http-2-settings-parameters-exchange,微软描述了两个新的 Windows 注册表设置,以解决恶意 HTTP/2 客户端可以发送过多的 HTTP/2 设置参数而导致服务器耗尽 CPU 的问题。
Http2MaxSettingsPerMinute 注册表设置的描述为
如果一分钟内收到的多个设置帧中包含的设置参数数量超过“Http2MaxSettingsPerMinute”值,则连接将被终止。
我不清楚这个计数(“设置参数数量”)是按每个连接测量的,还是按整个服务器测量的。也就是说,如果我将 Http2MaxSettingsPerMinute 的注册表值设置为 100,并且客户端在一分钟内启动 20 个连接,每个连接包含 5 个设置,那么一分钟内第 21 个尝试的连接会被终止吗?或者只有当单个连接包括客户端在一分钟内发送超过 100 个设置时,连接才会被终止?
谢谢!
马丁
答案1
你必须要求微软绝对确定,但我肯定将其视为每个连接的限制。
这篇文章的标题是(重点是我的):
定义交换的 HTTP/2 设置参数数量的阈值通过连接
如果这是服务器级别的设置,我会期望这一点:
如果一分钟内收到的多个设置帧中包含的设置参数数量超过“Http2MaxSettingsPerMinute”值,则连接将被终止。
读起来像这样:
如果一分钟内收到的多个设置帧中包含的设置参数数量超过“Http2MaxSettingsPerMinute”值,则跨越该限制的连接被杀。