Elastic Beanstalk 是不是应用请求/分钟限制?

Posted

技术标签:

【中文标题】Elastic Beanstalk 是不是应用请求/分钟限制?【英文标题】:Does Elastic Beanstalk apply a request/minute limit?Elastic Beanstalk 是否应用请求/分钟限制? 【发布时间】:2015-07-13 16:31:21 【问题描述】:

我正在使用 Elastic Beanstalk 运行 Java 应用程序。 我不知何故无法处理每分钟超过 25000 个请求(大约 450 个请求/秒), 无论我添加更多或更大的实例。 我正在同时对来自全球的几个 JMeter 客户(爱尔兰、俄勒冈、东京、我在波兰的本地机器)进行测试。每个都有 100 个线程。

在 CloudWatch 指标上,我可以看到奇怪的行为: 具有奇怪“节流”行为的 ELB 指标:

当我通过 ssh 连接到应用服务器实例并检查网络和 CPU 使用率时,看起来当达到“限制”时,没有任何请求被传递到任何应用服务器。没有 CPU 使用率,没有网络传输(通过 nload 检查)。应用服务器实例在这段时间内(最多一分钟)只是闲置。

所有实例的 CPU 使用率远未达到它们可以处理的最大负载。 我尝试了单实例(没有 Beanstalk)并发出了大约 45000 个请求/分钟(750 r/s),

首先。我怀疑我的测试是错误的,ELB 将所有请求仅重定向到一个实例(由于 DNS 解析), 所以我手动配置了 ELB(没有 Beanstalk)并手动附加了几个应用程序服务器。 它完美地分配了负载——当我在 m3.medium 上的测试数据库开始成为瓶颈时,我达到了大约 60000 个请求/分钟——这没关系,我期待它。 CloudWatch 的结果:

手动部署相同的应用程序:

它确保我的测试正常,ELB 不是问题。

所以,我的问题是: 1. Elastic Beanstalk 是否对 ELB 或它设法限制请求/分钟负载的其他服务应用任何其他限制? 2. 我是否需要以某种方式“解锁”通过 Beanstalk 处理更多请求的能力?

我的同事建议它看起来像一些“反 DDoS 系统”,但我找不到与此相关的任何东西。

【问题讨论】:

【参考方案1】:

Elastic Beanstalk 不会限制请求,但在您的测试中需要考虑一些因素:

ELB 根据感知流量通过 DNS 循环按需扩展。这种扩展可能需要一些时间,您可以通过查询 CNAME(使用 nslookup、dig 等)来查看 ELB 后面有多少平衡器。您还可以请求 AWS 支持来预热您的负载均衡器。 网络吞吐量取决于实例类型。 AWS做DDoS等安全监控,压力测试可能会被封,甚至导致账户被封。在运行安全敏感测试之前,您应该与 AWS 协调:http://aws.amazon.com/security/penetration-testing/

查看这篇最佳实践文章,了解有关弹性负载均衡器的更深入信息:http://aws.amazon.com/articles/1636185810492479

【讨论】:

要添加到 Julio 的答案,您可能想尝试在 ELB 上启用跨区域负载平衡

以上是关于Elastic Beanstalk 是不是应用请求/分钟限制?的主要内容,如果未能解决你的问题,请参考以下文章

AWS Elastic Beanstalk - 请求实体太大 (413)

如何在 AWS Elastic Beanstalk 部署的 Java Web 应用程序中启用 WebSocket 请求

使用 HTTPS 请求在 Elastic Beanstalk 上设置 API 的问题

在 ACM 中为 Elastic Beanstalk 后端请求证书

如何在 AWS Elastic Beanstalk 应用程序负载均衡器上运行的 Spring webapp 上获取请求者 IP

AWS Elastic Beanstalk