据我了解,GAE 的计费都归结为实例小时数(“IH”),或者在一段时间内运行了多少服务器实例。然而,这显然不是那么简单,因为除了 IH 之外,您还必须在一天中的整个过程中了解配额和资源限制(因为配额每 24 小时补充一次)。
我正在设计我的第一个 GWT/GAE 应用程序,并且遇到了许多文章(其中一些在下面引用),其中作者谈论了他们必须对其代码进行的主要重构 - 发布后 - 为了提供帮助与 Google 一起最大程度地降低计费和运营成本。
在一个例子中,开发人员对其 GAE 应用程序实施了一组优化,导致同一应用程序从每天 7 美元(约 220 美元/月)降至 0 美元,因为它最终低于资源的“免费”配额和计费阈值.
作为 GAE 的新手,我想知道是否有任何一组原则或实践可以预先融入我的应用程序的架构/设计中,一旦渗透到已实现的功能代码并部署到 GAE,将导致应用程序尽可能高效地运行(从金钱上讲)。
以下是我到目前为止所做的一些推论:
- 最大化缓存并最小化数据存储命中
- 尝试将尽可能多的异步请求处理推送到后端实例
- 启用并发 HTTP 请求处理,以便同一个实例可以同时处理多个请求
所以我的问题是:我所做的这些概括是否不正确,如果是,为什么(或者它们是有条件的,在某些情况下它们成立但在其他情况下不成立)?我在这里遗漏了什么重要的东西吗?例如,如何确定哪些代码属于后端实例(资源限制稍微宽松一点),使用哪种 GAE 特定的分析工具(AppStats、SpeedTracer 等)来查看瓶颈等。
此外,一些引用的文章:
- 配置最大空闲和最小延迟
- GAE 自己的扩展最佳实践
- CPU优化示例