我有一组Java AppEngine应用程序结构如下:
这两个组件托管在2个独立的AppEngine实例(付费)上,这是设计应用程序的标准方法,对我来说也很有意义,因为我也从其他客户端访问REST服务(移动应用程序等),所以我想把它分开。
我遇到的问题是,即使我直接访问REST服务(从浏览器或移动应用程序获取GET)响应总是很好,但从AppEngine前端响应时间访问REST服务有时非常不稳定。
我运行了一系列测试,而从浏览器到REST服务的GET总是返回得相当快,从我的AppEngine前端到REST服务的调用可以从浏览器返回到接收到> 10秒(导致超时等)一般不太合理的响应时间(秒而不是100秒的msecs)。
如果总体上存在延迟,我可以理解平均花费几乎所有时间来获得响应,但我不明白的是,从其他地方调用服务和调用它之间的区别来自 AppEngine实例。
我不得不说这不会一直发生,好几周都会好起来然后有一些非常糟糕的日子(今天真的不算是full blow outage),尽管一般情况下我我非常高兴应用程序引擎,让我有时想知道我是否在这个平台上投资时犯了错误。
我正在寻找一个解释:在排队从AppEngine实例传出的这种非常标准的http请求时,这是某种固有的AppEngine限制吗?
此外,我一直在考虑可能的解决方法 - 也许我应该将服务托管到与前端相同的实例中,但我真的不想那样做,我将它作为最后的手段。
任何建议表示赞赏。
答案 0 :(得分:0)
我可以看到两个原因
1.External访问您的REST服务,优化缓存,因为客户端是各种版本的浏览器。您在内部访问REST服务的FrontEnd应用程序可能无法实现非常好的缓存机制。
2. AppEngine内部流量账单?如果不是,那么这可能是提供外部IP优先于内部的原因?