【问题标题】:slowness after migrating to netcoreapp 2.0 and docker AWS ECS迁移到 netcoreapp 2.0 和 docker AWS ECS 后速度变慢
【发布时间】:2018-06-23 17:27:53
【问题描述】:

我已将我们的 WebAPI .net 4.6.1 项目迁移到 netcoreapp2.0 负载测试后有以下观察结果。需要反馈吗?

旧堆栈:AWS 应用负载均衡器 (ALB) -> EC2 (c4.large) -> WebAPI .net 4.6.1 (IIS)

新堆栈:AWS App Load Balancer (ALB) -> ECS docker (c4.large eq) -> Linux 上的 WebAPI netcore 2.0 (Kestrel)

请参阅上面托管在 linux ECS docker 上的 .net 4.6 与 netcore 2.0 Web API 的响应时间比较

  1. 直到 20 RPS netcore2.0 更快。
  2. 在 20 RPS 之后,netcore 2.0 速度变慢并出现尖峰。
  3. netcore 2.0 上的其他测试在 40 RPS 后失败。应用程序根本没有响应。

正在寻找调整 kestrel。移除 AWS ALB 并开始直接从 docker 访问 IP。 50 RPS 的测试正在完成。

问题:

  1. 有没有人观察到 AWS ALB 在绑定到 docker 和 kestrel 托管的 WebAPI 时表现不佳。当我删除 ALB 时,即使到 80 RPS,情况也很好

  2. 将 Nginix 置于 ALB 和 Kestrel 之间是一个不错的选择,这将有助于 Kestrel 承担更多负载并在负载时始终如一地执行。

  3. 任何其他可以调整的红隼配置。

【问题讨论】:

标签: docker amazon-ec2 asp.net-core-2.0 amazon-ecs elastic-load-balancer


【解决方案1】:

缓慢不是由于迁移到 .netcore,而是在迁移时我们对一个中间件进行了糟糕的编码。修好之后。即使在高负载下,响应时间也相当。

【讨论】:

  • 您能否提供一些有关特定中间件配置错误的详细信息?我在 .NET Core 2.2 上迁移到 ECS + Kestrel 时遇到了同样的问题
  • 它是一个用于注入分析日志的自定义中间件,没有特定的框架。
猜你喜欢
  • 1970-01-01
  • 2017-07-16
  • 2016-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多