从观察者的角度来看,症状与此处的问题相同 场景也相同:Angular 应用程序向 REST api 发送预检请求,预检请求大约需要 50% 的时间,最多 1.3 秒(插图与链接的问题)。
此外,websocket 经常超时,直到 socket-io 最终成功建立连接。问题在 Chrome 中更为明显,而在 Safari/Firefox 中则较少。
但是,我们使用的是 ALB 而不是 ELB,我们所有的子网都是公共的。
从观察者的角度来看,症状与此处的问题相同 场景也相同:Angular 应用程序向 REST api 发送预检请求,预检请求大约需要 50% 的时间,最多 1.3 秒(插图与链接的问题)。
此外,websocket 经常超时,直到 socket-io 最终成功建立连接。问题在 Chrome 中更为明显,而在 Safari/Firefox 中则较少。
但是,我们使用的是 ALB 而不是 ELB,我们所有的子网都是公共的。
我们发现可行的解决方案是所有子网都需要通过相同的互联网网关 - 相同的路由表应用于所有子网。
完成后,所有请求都开始更快地通过,并且 websocket 立即连接而无需重新连接。
有一个类似的问题。LB 必须设置为使用至少 2 个可用区。您必须在每个 AZ 中选择它应该使用的子网。就我而言,其中一个网络的 ACL 设置错误,基本上拒绝了所有流量。这意味着每当 DNS 决定为您提供非正常运行的 LB 接口的 IP 地址时,服务似乎会停止一分钟左右。然后它会在 DNS 缓存过期并且您获得功能接口的 IP 后重新开始工作。