一个Google App Engine实例可以处理多少个请求?

时间:2016-12-12 03:06:17

标签: google-app-engine google-cloud-endpoints

我有一个简单的Cloud Endpoints Restful API,可以简单地添加实体,更新和实体,删除实体,搜索实体。

我的问题是一个Google App Engine实例可以处理多少流量?也就是说,在您需要另一个实例之前有多少API请求?

我知道有不同的instance classes所以我们只使用默认的B4(内存:512 MB,CPU限制:2.4 GHz)

我也知道这可能是一个难以回答的问题,但鉴于我上面描述的简单API,任何人都可以告诉我一个实例可以处理的平均请求数(让我假设我没有使用memcache或任何其他优化)?

任何指向特定文档的链接也会有很大帮助,因为我有点困惑。

谢谢!

1 个答案:

答案 0 :(得分:3)

仅当服务配置为自动或基本缩放时,GAE才会自动动态生成更多服务实例。

来自Scaling dynamic instances

  

App Engine调度程序决定是否使用现有实例(空闲或接受的实例)提供每个新请求   并发请求),将请求放入待处理的请求队列,或   为该请求启动一个新实例。该决定考虑在内   可用实例的数量,应用程序的速度   一直在提供请求(延迟),以及启动需要多长时间   一个新的实例。

     

每个实例都有自己的传入请求队列。 App Engine监视在每个实例的队列中等待的请求数。如果   App Engine检测到应用程序的队列过长   由于负载增加,它会自动创建一个新的实例   用于处理该负载的应用程序。

实际行为还取决于相应的缩放模式配置参数,请参阅Change auto scaling performance settingsScaling elements。当然,还有应用程序代码如何响应这些请求。如果不是不可能得到确切的数字那么困难。

但你可以做的是真正尝试衡量它:让测试程序通过典型的请求访问你的应用程序,并逐步增加请求负载,同时你在2个独立的浏览器窗口中观看:

  • 用于生成新实例(通过查找请求日志以及那些伴随信息消息的消息,指示已启动新实例或通过检查实例页面)
  • 仪表板摘要中的相关屏幕,该屏幕将显示实例启动时应用的感兴趣的统计信息

您还可以查看您的应用 request logs,了解他们的处理时间。对于其中一些,您甚至可以在StackDriver中看到类似appstats的跟踪。您还可以启用appstats来获取所有您的请求的数据。

从这些图中你可以尝试推导出一些最低性能值,这次是基于"实例可以处理"表示实例可以足够快地处理请求,以防止其请求队列深度不断增长,直到实例被杀死(我怀疑它的负载水平远高于触发动态产生新实例的级别)。

例如,在我的应用中处理一种类型的请求在F1实例上大多数时间不到50毫秒。由于我threadsafe: true配置了处理某些请求可能会重叠(多少 - 我完全不知道)。所以我可以估计F1实例每小时可以处理超过72000个类型的请求。但我也有平均1的请求,同一个实例只能确定每小时处理大约3600个这样的请求。正如你所看到的那样一个球场值并没有多大意义。

这就是为什么恕我直言,仪表板数据优于估算,因为它们是应用程序类型的真实范围/点差及其的平均值。实际处理。例如,将包括多线程增益。