【问题标题】:AWS Application Load Balancer (ALB): How many http2 persistent-connections can it keep alive at the same time?AWS Application Load Balancer (ALB):它可以同时保持多少个 http2 持久连接?
【发布时间】:2022-01-12 15:31:52
【问题描述】:

基本上是主题所说的。

我是这项运动的新手,需要一些高级信息来弄清楚 ALB 对 http2 持久连接的行为。

我知道 ALB 支持 http2 持久连接:

https://docs.aws.amazon.com/elasticloadbalancing/latest/application/application-load-balancers.html#connection-idle-timeout

  1. 我在文档中找不到任何解释如何配置 http2-connection-pools(由 ALB 维护)的大小(如果有的话)。关于这个特定方面的任何链接?

  2. 默认情况下,ALB 是在它自己和浏览器(客户端)之间维护一个固定大小的 http2-connection-pool,还是这些连接池是动态大小的?如果它们是固定大小的,默认情况下它们有多大?如果它们是动态的,哪些规则控制它们的扩展/收缩以及它们可以保持的最大持久 http2 连接数量是多少? 30k? 40k?

  3. 假设我们有 20k http2-clients 运行单页应用程序 (SPA),会话持续时间长达 30 分钟。这些客户需要通过 AWS ALB 为其半频繁的 http2 请求享受超低延迟(比如每 4 秒 1 个请求,这意味着大约 5k 请求/秒登陆 ALB):

    将 ALB 配置为具有大量功能是否有意义? http2-connection-pool 从而保证 all 这 20k 来自我们客户的 http2-connections 确实会保持活动状态 在客户端会话的整个生命周期中?

    推理:通过这种方式,不会关闭和重新打开 http2-connection(保证较低的抖动,因为重新建立新的 http2-connection 涉及一些额外的延迟 - 至少这是我对此的直觉,我很乐意纠正如果我想念一些东西)

【问题讨论】:

    标签: amazon-web-services amazon-ec2 load-balancing http2 aws-application-load-balancer


    【解决方案1】:

    我在亚马逊论坛上问过这个问题:

    https://repost.aws/questions/QULRcA_-73QxuAOyGYWhExng/aws-application-load-balancer-and-http-2-persistent-connections-keep-alive

    我得到了这个答案,它详细地涵盖了所讨论的各个方面:

    随着流量的增加,ALB 将积极扩大规模,并随着流量的减少而保守地缩小规模。随着规模的扩大,将添加新的更高容量节点并在 DNS 中注册,而以前的节点将被删除。这有效地为 ALB 提供了一个可以使用的动态连接池。

    使用您所描述的客户端行为时,您在配置 ALB 时要查看的主要属性将是连接空闲超时设置。默认情况下,这设置为 60 秒,但可以设置为最多 4000 秒的值。根据您的情况,您可以设置一个值来满足您在不终止连接的情况下维持长达 30 分钟的长期连接的需要,同时在您的应用程序中使用 HTTP 保持活动选项。

    如您所料,ALB 的初始容量可能无法立即满足您的工作负载。但如上所述,ALB 将根据接收到的流量积极扩大规模,保守缩小规模,在几分钟内扩大规模,在几小时内缩小规模。我强烈建议查看我们的 ELB 评估最佳实践页面,以了解有关扩展的更多信息以及如何测试应用程序以更好地了解 ALB 将如何根据您的流量负载运行。我将在此页面中强调,根据流量增长的速度,如果 ALB 尚未完全扩展以满足流量需求,但最终会扩展到必要的容量,它可能会返回 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 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-30
      • 1970-01-01
      • 2020-09-14
      • 1970-01-01
      • 2021-11-25
      • 2019-06-08
      • 2021-01-21
      • 2017-11-23
      相关资源
      最近更新 更多