Google compute engine GCE网络负载平衡器在处于非活动状态后挂起

Google compute engine GCE网络负载平衡器在处于非活动状态后挂起,google-compute-engine,google-cloud-platform,Google Compute Engine,Google Cloud Platform,我正在谷歌云上建立一个新的服务,其中有一个“网络负载均衡器”。在安装过程中,我只使用一台后端服务器。经过一段时间的不活动后,对负载平衡器地址的第一个请求似乎不会传递到后端服务器 负载平衡器报告后端服务器运行正常 我在后端服务器访问日志中看到每5秒就有健康检查请求进入服务器 如果我直接向后端服务器的健康检查URL发出请求,我会得到一个成功的响应 如果我通过负载平衡器请求执行健康检查URL(或任何其他URL),浏览器将不确定地挂起,并且似乎从未向后端服务器发出任何请求 如果我随后刷新浏览器,页面将

我正在谷歌云上建立一个新的服务,其中有一个“网络负载均衡器”。在安装过程中,我只使用一台后端服务器。经过一段时间的不活动后,对负载平衡器地址的第一个请求似乎不会传递到后端服务器

  • 负载平衡器报告后端服务器运行正常
  • 我在后端服务器访问日志中看到每5秒就有健康检查请求进入服务器
  • 如果我直接向后端服务器的健康检查URL发出请求,我会得到一个成功的响应
  • 如果我通过负载平衡器请求执行健康检查URL(或任何其他URL),浏览器将不确定地挂起,并且似乎从未向后端服务器发出任何请求
  • 如果我随后刷新浏览器,页面将正常加载,进一步的请求将继续正常加载,直到一段不活动的时间(小时?)过去
这似乎不会成为生产中的一个问题,但任何无法解释的问题都会让我对在现场使用GCE负载平衡器感到不舒服

这个问题一半是帮助请求,一半是错误报告。这是一个众所周知的问题还是我做错了什么

谢谢你的帮助

更新

回顾服务器日志,我看到挂起的请求确实显示在访问日志中,但直到我刷新浏览器,它显示0秒的响应时间

这是两个请求。第一个是挂起的请求。第二个是刷新

173.51.253.242 - devuser [09/May/2015:19:15:27 +0000] "GET /api/ HTTP/1.1" 499 0 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36" "-"
173.51.253.242 - devuser [09/May/2015:19:15:27 +0000] "GET /api/ HTTP/1.1" 200 5 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36" "-"

请注意,这两个请求在同一秒内到达(当我刷新时),失败的请求的响应代码为499,响应时间为0。499表示连接已被客户端关闭,因此我认为这意味着在我点击刷新之前,负载平衡器未启动请求,此时它已与后端服务器建立了两个连接。

使用实际答案更新此请求,因为mensi的上述评论似乎已找到问题的根源


将TCP keepalive添加到平衡的主机解决了问题。

如果您只有一台服务器,您要平衡什么?系统上线后,我将添加其他服务器。该系统目前正在开发中。两次运行状况检查的代码是什么样子的?运行状况检查只返回状态200,但任何URL都会出现此问题。我只是用健康检查来做测试,因为这是最简单的测试。你是不是在打电话?