Mar*_*osi 6 amazon-web-services locust amazon-elastic-beanstalk
我需要设置一个 api 应用程序来收集要在推荐引擎中使用的事件数据。这是我的设置:
当 reqs/sec 低于 1000,也许是 1200 时,一切正常。一旦超过,我的负载均衡器报告它背后的一些实例报告 5xx 错误(附加)。我还尝试了负载均衡器后面的 4 个实例,尽管开始时速度高达 3000req/sec,但不久之后,ebs 健康工具和 Locust 都报告了 503 和 504,而所有实例都处于完美的健康状态根据ebs Health Overview中的实际数字,显示只有10%-20%的CPU利用率。
我在配置 env 时遗漏了什么吗?似乎无论我在负载均衡器后面有多少台机器,env 每秒处理的请求都不超过 1000-2000 个。
编辑:现在我确定是 ELB 导致了问题,而不是实例。
我对 10 个模拟用户进行了负载测试。每个用户发送大约 1req/sec 并且负载增加 10 个用户/秒到 4000 个用户,这应该等于大约 4000req/sec。仍然它似乎不喜欢任何超过 3.5k req/sec(attachment1)的请求率。
正如您从附件 2中看到的,负载均衡器后面的 4 个实例处于完美的健康状态,但我仍然不断收到 503 错误。只是负载平衡器本身导致了问题。看看 SurgeQueueLength 和 SpilloverCount 如何在某个时间快速增加。(附件3)我想弄清楚原因。
此外,我完全删除了负载均衡器并仅使用一个实例进行了测试。它最多可以处理大约 3k req/sec。(attachment4和attachment5),所以它绝对是负载均衡器。
也许我错过了负载平衡器默认设置的一些关键限制,比如 1024 的队列大小?1 个负载均衡器的正常处理率是多少?我应该添加更多负载均衡器吗?它可能与可用区有关吗?来自一个区域的 ELB 侦听器正在尝试路由到来自不同区域的实例?
更新:启用跨区域负载平衡
该消息显示“9.8% 的 ELB 请求因 HTTP 5xx 失败(6 分钟前)”。这并不意味着您的实例没有返回 HTTP 5xx 响应。ELB 本身的请求失败。当您的后端实例达到最大容量时(例如,连接已饱和并且它们拒绝与 ELB 的连接),可能会发生这种情况。
您的请求正在 ELB 中蔓延。他们从未到达实例。如果它们在 EC2 实例上失败,那么原因会有所不同,并且环境的数据将与实例的数据匹配。
另请注意,原因表明这是“6 分钟前”的状态。Elastic Beanstalk 多个数据源 - 一种是来自实例的数据,它在所示表中显示每秒请求数和 HTTP 状态代码。另一个数据源是 ELB 的 CloudWatch 指标。由于 ELB 的 cloudwatch 指标为 1 分钟,因此该数据会稍微延迟,原因会告诉您该信息有多旧。
| 归档时间: |
|
| 查看次数: |
3187 次 |
| 最近记录: |