AWS 应用程序负载均衡器导致 ASP.NET 应用程序瘫痪

AWS 应用程序负载均衡器导致 ASP.NET 应用程序瘫痪

我有一个配置了 EC2 和自动扩展组的 AWS 应用程序负载均衡器。EC2 实例运行 Windows+IIS Web 服务器。Web 服务器连接到数据库。

在某些情况下(每 2 个月一次),ALB 的运行状况检查开始检测到应用程序不健康并关闭 EC2 实例。始终至少有 2 个实例在运行,并且所有实例同时发生这种情况。我试图了解为什么会发生这种情况,但我找不到任何有用的日志或迹象表明这种情况来自何处。


看看实例在 12 月 6 日是如何突然降至零的:

在服务实例中

放大:

在服务实例中,放大

EC2 实例终止于:

终止原因

健康检查配置为 ping 一个页面,该页面不是查询数据库,因此数据库瓶颈似乎不是可能的原因。

当这种情况发生时,响应时间就会急剧增加:

请求响应时间

根据 NewRelic 的测量结果:

newrelic 响应时间

请注意以下几点:

  • 响应的所有阶段都较慢(Redis 时间、.NET 时间等)
  • 所有服务器都同时发生这种情况,因此不太可能是服务器内部的问题
  • 它总是发生在工作时间以外,当负载较低时

自动缩放配置:

Minimum capacity=2
Maximum capacity=15
Instances distribution= 50% On-Demand, 50% Spot
Include On-Demand base capacity=Designate the first 1 instances as On-Demand
On-Demand allocation strategy=Prioritized
Spot allocation strategy=Lowest price - diversified across the 10 lowest priced pools
Capacity rebalance=Off
Instance scale-in protection=Not protected from scale in
Termination policies=Default
Default cooldown=300

目标组配置:

Protocol=HTTPS
Path=/path/to/login/page
Port=Traffic port
Healthy threshold=2 consecutive health check successes
Unhealthy threshold=4 consecutive health check failures
Timeout=20 seconds
Interval=25 seconds
Success codes=200

相关内容