I have migrated our WebAPI .net 4.6.1 project to netcoreapp2.0 After load testing have below observations. Need feedback ?
Old stack : AWS App Load balancer (ALB) -> EC2 (c4.large) -> WebAPI .net 4.6.1 (IIS)
New Stack : AWS App Load Balancer (ALB) -> ECS docker (c4.large eq) -> WebAPI netcore 2.0 (Kestrel) on Linux
Refer above response times comparison for .net 4.6 Vs netcore 2.0 Web API hosted on linux ECS docker
- Till 20 RPS netcore2.0 is faster.
- After 20 RPS netcore 2.0 slows down and spiky.
- Few more tests on netcore 2.0 failed after 40 RPS. Application simply does not respond.
Was looking out for tuning kestrel.Removed AWS ALB and started hitting directly on IP from docker. Tests with 50 RPS were completing.
Questions :
Has anybody observed AWS ALB not performing well when tied to docker and kestrel hosted WebAPI. As when I remove ALB things are good even till 80 RPS
Is putting Nginix in between ALB and Kestrel is good option and will help kestrel take more load and perform consistently on load.
Any other kestrel configuration that can be tweaked.