GCE网络负载均衡器在一段时间不活动后挂起

时间:2015-05-09 19:44:39

标签: google-compute-engine google-cloud-platform

我正在使用“网络负载均衡器”在Google Cloud上设置新服务。我在安装过程中只使用一个后端服务器。在一段时间不活动之后,对负载均衡器地址的第一个请求似乎没有传递到后端服务器。

  • 负载均衡器报告后端服务器运行正常。
  • 我在后端服务器访问日志中看到健康检查请求进入服务器的时间为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表示连接已被客户端关闭所以我认为这意味着请求不是由loadbalancer启动,直到我点击刷新,此时它连接到后端服务器。

1 个答案:

答案 0 :(得分:0)

使用实际答案更新此内容,因为上述评论似乎已成为问题的根源。

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