初始连接后,与GCE的HTTP连接挂起

时间:2014-03-02 17:17:23

标签: google-compute-engine

我有一个debian实例,网络防火墙允许网络流量(tcp:80,443)。

在那个例子中,我用非常标准的配置设置了Nginx和Rails独角兽。当我从浏览器访问服务器以检索静态文件时,GCE会立即返回该文件而没有任何问题。但是,如果您将服务器空闲5分钟左右,并尝试按相同的 URL /文件,请求将在返回之前挂起约5-7分钟。与此同时,其他网址会立即返回,而不是我之前检索到的网址。挂起的请求最终会在5-7分钟后返回。

我检查了日志,Nginx和Unicorn似乎得到了请求,但响应似乎在网络的某个地方丢失了。我怀疑GCE可能正在进行一些缓存,这些缓存会在一段空闲时间后到期,并导致第二次响应中的长时间延迟。

我已将问题缩小到GCE,因为我在非GCE VM上重新创建了相同的堆栈,并且它们都按预期工作。 (顺便说一句,标准配置包括关闭Nginx和Unicorn上的所有缓存)

我错过了我应该设置的配置吗?

2 个答案:

答案 0 :(得分:0)

我遇到了与Apache / Jetty服务器相同的问题。我刚刚做的是创建一个非常恼人的循环来唤醒服务器。我猜想发生的事情是服务器休眠,最初的无响应是服务器唤醒。我现在拥有的是index.html重定向到redirect.html,它重定向到我的Java应用程序。到达前两个文件时,应用程序已启动并正在运行以备使用。有点hackey和原始。如果有人有更好的解决方案,我会全力以赴!

答案 1 :(得分:0)

gce文档提到了keep alive的问题 https://developers.google.com/compute/docs/troubleshooting#communicatewithinternet

我们的服务器也存在同样的问题。 将实施推荐的设置并监控一天或2天。