GCP 负载平衡器 502 服务器错误和 "backend_connection_closed_before_data_sent_to_client" IIS 10

GCP load balancer 502 server error and "backend_connection_closed_before_data_sent_to_client" IIS 10

我有带 4 个 IIS 10 Web 服务器的 GCP 负载平衡器。偶尔会出现 502-服务器错误。在日志中它显示这是因为 backend_connection_closed_before_data_sent_to_client。我已经通读了文章 https://cloud.google.com/compute/docs/load-balancing/http/,它说 keepalive timout 需要为 nginx 和 apache 设置为 620 秒。我如何在 IIS 10 中执行相同的操作。

您可以在web.config中将其设置为默认情况下在http运行时的执行超时属性,当您设置keep alive时,它会将超时设置为120秒。如果仍然不起作用,则可能是有代理服务器之间的请求响应过程。您必须检查代理服务器是否超时。

我在 gcp 中遇到了同样的情况,我已经在负载平衡器级别设置了所有内容,但没有用。然后我发现我们的进程之间有一个代理服务器。让我知道你是否可以更详细地告诉我

在提出问题后解决了这个问题 google 云团队。我把它放在这里,以便其他人可以受益。

第 1 步:在 Google Cloud Load Balancer

中设置超时

Google 云负载均衡器中有两个超时设置。

  1. 超时
  2. 连接耗尽超时。

请参见下面的屏幕截图。

以上两个设置必须相同。在我们的例子中,有许多长 运行 请求,它被设置为 1800 秒。

第 2 步:将 IIS 中的连接超时设置为大于负载平衡器设置的 20 秒

在 IIS 站点名称下 - 转到 高级设置,然后将 连接超时 值设置为比负载多 20 秒平衡器超时。在我的例子中是 1820.

想法是 IIS 连接不应在负载平衡器之前超时。如果超时,则可能会导致 backend_connection_closed_before_data_sent_to_client 错误。