【发布时间】: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 系统”,但我找不到与此相关的任何东西。
【问题讨论】:
标签: java amazon-web-services jmeter amazon-elastic-beanstalk amazon-elb