我有一个简单的Cloud Endpoints Restful API,可以简单地添加实体,更新和实体,删除实体,搜索实体。
我的问题是一个Google App Engine实例可以处理多少流量?也就是说,在您需要另一个实例之前有多少API请求?
我知道有不同的instance classes所以我们只使用默认的B4
(内存:512 MB,CPU限制:2.4 GHz)
我也知道这可能是一个难以回答的问题,但鉴于我上面描述的简单API,任何人都可以告诉我一个实例可以处理的平均请求数(让我假设我没有使用memcache或任何其他优化)?
任何指向特定文档的链接也会有很大帮助,因为我有点困惑。
谢谢!
答案 0 :(得分:3)
仅当服务配置为自动或基本缩放时,GAE才会自动动态生成更多服务实例。
App Engine调度程序决定是否使用现有实例(空闲或接受的实例)提供每个新请求 并发请求),将请求放入待处理的请求队列,或 为该请求启动一个新实例。该决定考虑在内 可用实例的数量,应用程序的速度 一直在提供请求(延迟),以及启动需要多长时间 一个新的实例。
每个实例都有自己的传入请求队列。 App Engine监视在每个实例的队列中等待的请求数。如果 App Engine检测到应用程序的队列过长 由于负载增加,它会自动创建一个新的实例 用于处理该负载的应用程序。
实际行为还取决于相应的缩放模式配置参数,请参阅Change auto scaling performance settings和Scaling elements。当然,还有应用程序代码如何响应这些请求。如果不是不可能得到确切的数字那么困难。
但你可以做的是真正尝试衡量它:让测试程序通过典型的请求访问你的应用程序,并逐步增加请求负载,同时你在2个独立的浏览器窗口中观看:
您还可以查看您的应用 request logs,了解他们的处理时间。对于其中一些,您甚至可以在StackDriver中看到类似appstats的跟踪。您还可以启用appstats来获取所有您的请求的数据。
从这些图中你可以尝试推导出一些最低性能值,这次是基于"实例可以处理"表示实例可以足够快地处理请求,以防止其请求队列深度不断增长,直到实例被杀死(我怀疑它的负载水平远高于触发动态产生新实例的级别)。
例如,在我的应用中处理一种类型的请求在F1实例上大多数时间不到50毫秒。由于我threadsafe: true
配置了处理某些请求可能会重叠(多少 - 我完全不知道)。所以我可以估计F1实例每小时可以处理超过72000个类型的请求。但我也有平均1的请求,同一个实例只能确定每小时处理大约3600个这样的请求。正如你所看到的那样一个球场值并没有多大意义。
这就是为什么恕我直言,仪表板数据优于估算,因为它们是应用程序类型的真实范围/点差及其的平均值。实际处理。例如,将包括多线程增益。