迁移到 netcoreapp 2.0 和 docker AWS ECS 后变慢

slowness after migrating to netcoreapp 2.0 and docker AWS ECS

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

旧堆栈:AWS App Load balancer (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)

请参阅上面关于 .net 4.6 与 netcore 2.0 Web API 托管在 linux ECS docker

上的响应时间比较
  1. 直到 20 RPS netcore2.0 更快。
  2. 在 20 RPS 之后 netcore 2.0 变慢并且尖锐。
  3. netcore 2.0 的测试在 40 RPS 后失败了。应用程序根本没有响应。

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

问题:

  1. 是否有人观察到 AWS ALB 在绑定到 docker 和 kestrel 托管的 WebAPI 时表现不佳。当我删除 ALB 时,即使达到 80 RPS

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

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

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