AWS Application Load Balancer (ALB):它可以同时保持多少个 http2 持久连接?
AWS Application Load Balancer (ALB): How many http2 persistent-connections can it keep alive at the same time?
基本上是主题所说的内容。
我是这项运动的新手,需要一些高级信息来了解 ALB 对 http2 持久连接的行为。
我知道ALB支持http2持久连接:
我在文档中找不到任何解释 http2 连接池(由 ALB 维护)的大小是如何配置的(如果有的话)。关于这个特定方面的任何链接?
默认情况下,ALB 是否在其自身与浏览器(客户端)之间维护一个固定大小的 http2 连接池,或者这些连接池的大小是动态的?如果它们是固定大小的,默认情况下它们有多大?如果它们是动态的,它们的 expansion/contraction 受什么规则约束?它们可以保持的最大持续 http2 连接数是多少? 3万? 40k?
假设我们有 20k 个 http2 客户端 运行 单页应用程序 (SPA),会话持续长达 30 分钟。这些客户需要通过 AWS ALB 为他们的半频繁 http2 请求享受超低延迟(比如每 4 秒 1 个请求,转化为大约 5k requests/second 登陆 ALB):
配置 ALB 是否有意义
http2-connection-pool 从而保证all这20k
来自我们客户的 http2-connections 确实会保持活跃
在客户端会话的整个生命周期内?
推理:通过这种方式,不会关闭和重新打开任何 http2 连接(保证抖动较低,因为重新建立新的 http2 连接会涉及一些额外的延迟 - 至少这是我对此的直觉,我很乐意支持如果我遗漏了什么,请更正)
我在亚马逊论坛上问过这个问题:
我得到了这个答案,它非常详细地涵盖了问题的各个方面:
<< 因此,当谈到应用程序负载均衡器的并发连接限制时,它可以服务的流量没有上限;它可以自动扩展以满足绝大多数流量工作负载。
ALB 将随着流量的增加而积极扩展,并随着流量的减少而保守地缩减。随着规模的扩大,将添加新的更高容量的节点并向 DNS 注册,并且将删除以前的节点。这有效地为 ALB 提供了一个可以使用的动态连接池。
在处理您所描述的客户端行为时,您在配置 ALB 时要查看的主要属性将是“连接空闲超时”设置。默认情况下,该值设置为 60 秒,但最多可设置为 4000 秒。在您的情况下,您可以设置一个值来满足您的需要,即在不终止连接的情况下维持长达 30 分钟的长期连接,同时在您的应用程序中使用 HTTP keep-alive 选项。
如您所料,ALB 的初始容量可能无法立即满足您的工作负载。但如上所述,ALB 将根据收到的流量积极向上扩展,并保守地向下扩展,在几分钟内扩展,在几小时内缩减。我强烈建议查看我们的 ELB 评估最佳实践页面,以了解有关扩展的更多信息以及如何测试您的应用程序,以更好地了解 ALB 将如何根据您的流量负载运行。我将在此页面中强调,根据流量增长的速度,如果 ALB 尚未完全扩展以满足流量需求,它可能 return 出现 HTTP 503 错误,但最终会扩展到必要的容量。进行负载测试时,我们建议在五分钟的时间间隔内将流量增加不超过 50%。
在定价方面,ALB 按每小时收费,ALB 运行 以及每小时使用的负载均衡器容量单位 (LCU) 的数量。 LCU 是根据处理流量的一组维度来衡量的;新连接数、活动连接数、已处理字节数和规则评估,并且仅根据特定小时内使用率最高的维度向您收费。
作为使用 ELB 定价计算器的示例,假设约 20,000 个连接每秒增加 10 个连接,平均连接持续时间为 30 分钟(1800 秒)并且每 4 秒发送 1 个请求,总共每小时处理 1GB 的数据,您可以预计粗略的成本输出:
1 GB per hour / 1 GB processed bytes per hour per LCU for EC2
instances and IP addresses as targets
= 1 processed bytes LCUs for EC2 instances and IP addresses
as targets
10 new connections per second / 25 new connections
per second per LCU = 0.40 new connections LCUs
10 new connections per second x 1,800 seconds
= 18,000 active connections
18,000 active connections / 3000 connections per LCU
= 6 active connections LCUs
1 rules per request - 10 free rules = -9 paid rules per request
after 10 free rules Max (-9 USD, 0 USD) = 0.00 paid rules per
request Max (1 processed bytes LCUs, 0.4 new connections LCUs,
6 active connections LCUs, 0 rule evaluation LCUs)
= 6 maximum LCUs
1 load balancers x 6 LCUs x 0.008 LCU price per hour x 730 hours
per month = 35.04 USD
Application Load Balancer LCU usage charges (monthly): 35.04 USD
<<
基本上是主题所说的内容。
我是这项运动的新手,需要一些高级信息来了解 ALB 对 http2 持久连接的行为。
我知道ALB支持http2持久连接:
我在文档中找不到任何解释 http2 连接池(由 ALB 维护)的大小是如何配置的(如果有的话)。关于这个特定方面的任何链接?
默认情况下,ALB 是否在其自身与浏览器(客户端)之间维护一个固定大小的 http2 连接池,或者这些连接池的大小是动态的?如果它们是固定大小的,默认情况下它们有多大?如果它们是动态的,它们的 expansion/contraction 受什么规则约束?它们可以保持的最大持续 http2 连接数是多少? 3万? 40k?
假设我们有 20k 个 http2 客户端 运行 单页应用程序 (SPA),会话持续长达 30 分钟。这些客户需要通过 AWS ALB 为他们的半频繁 http2 请求享受超低延迟(比如每 4 秒 1 个请求,转化为大约 5k requests/second 登陆 ALB):
配置 ALB 是否有意义 http2-connection-pool 从而保证all这20k 来自我们客户的 http2-connections 确实会保持活跃 在客户端会话的整个生命周期内?
推理:通过这种方式,不会关闭和重新打开任何 http2 连接(保证抖动较低,因为重新建立新的 http2 连接会涉及一些额外的延迟 - 至少这是我对此的直觉,我很乐意支持如果我遗漏了什么,请更正)
我在亚马逊论坛上问过这个问题:
我得到了这个答案,它非常详细地涵盖了问题的各个方面:
<< 因此,当谈到应用程序负载均衡器的并发连接限制时,它可以服务的流量没有上限;它可以自动扩展以满足绝大多数流量工作负载。
ALB 将随着流量的增加而积极扩展,并随着流量的减少而保守地缩减。随着规模的扩大,将添加新的更高容量的节点并向 DNS 注册,并且将删除以前的节点。这有效地为 ALB 提供了一个可以使用的动态连接池。
在处理您所描述的客户端行为时,您在配置 ALB 时要查看的主要属性将是“连接空闲超时”设置。默认情况下,该值设置为 60 秒,但最多可设置为 4000 秒。在您的情况下,您可以设置一个值来满足您的需要,即在不终止连接的情况下维持长达 30 分钟的长期连接,同时在您的应用程序中使用 HTTP keep-alive 选项。
如您所料,ALB 的初始容量可能无法立即满足您的工作负载。但如上所述,ALB 将根据收到的流量积极向上扩展,并保守地向下扩展,在几分钟内扩展,在几小时内缩减。我强烈建议查看我们的 ELB 评估最佳实践页面,以了解有关扩展的更多信息以及如何测试您的应用程序,以更好地了解 ALB 将如何根据您的流量负载运行。我将在此页面中强调,根据流量增长的速度,如果 ALB 尚未完全扩展以满足流量需求,它可能 return 出现 HTTP 503 错误,但最终会扩展到必要的容量。进行负载测试时,我们建议在五分钟的时间间隔内将流量增加不超过 50%。
在定价方面,ALB 按每小时收费,ALB 运行 以及每小时使用的负载均衡器容量单位 (LCU) 的数量。 LCU 是根据处理流量的一组维度来衡量的;新连接数、活动连接数、已处理字节数和规则评估,并且仅根据特定小时内使用率最高的维度向您收费。
作为使用 ELB 定价计算器的示例,假设约 20,000 个连接每秒增加 10 个连接,平均连接持续时间为 30 分钟(1800 秒)并且每 4 秒发送 1 个请求,总共每小时处理 1GB 的数据,您可以预计粗略的成本输出:
1 GB per hour / 1 GB processed bytes per hour per LCU for EC2
instances and IP addresses as targets
= 1 processed bytes LCUs for EC2 instances and IP addresses
as targets
10 new connections per second / 25 new connections
per second per LCU = 0.40 new connections LCUs
10 new connections per second x 1,800 seconds
= 18,000 active connections
18,000 active connections / 3000 connections per LCU
= 6 active connections LCUs
1 rules per request - 10 free rules = -9 paid rules per request
after 10 free rules Max (-9 USD, 0 USD) = 0.00 paid rules per
request Max (1 processed bytes LCUs, 0.4 new connections LCUs,
6 active connections LCUs, 0 rule evaluation LCUs)
= 6 maximum LCUs
1 load balancers x 6 LCUs x 0.008 LCU price per hour x 730 hours
per month = 35.04 USD
Application Load Balancer LCU usage charges (monthly): 35.04 USD
<<