我在 GAE 上托管了一个包含 2 个模块的小型应用程序。默认模块前端分配了 28 个实例小时。后端正在使用,basic_scaling:
因此只有 8 个实例小时可用。
我注意到我的应用程序只运行了 2 个小时,但后端模块已经用完了 76% 的配额!这对我来说毫无意义。根据文档,实例小时数是通过实例正常运行时间计算的(考虑多个实例)。
实例小时数应与我的模块正常运行时间成 1:1 的对应关系。我已经
max_instances: 1
设置了。我还检查了正在运行的实例,以确保 App Engine 不会生成多个实例。事实并非如此。我得到了一个实例,但它消耗的时间比应有的要快。
我是不是误解了文档?如果是这样,我该如何降低配额消耗的速度?
答案1
“基本缩放”方法当请求到达时会创建一个实例;“基本实例处理完最后一个请求后十五分钟”计费结束。
账单、仪表板等上显示的“实例小时”指的是 B1 实例类(最小的实例类);其他实例类按比例缩放。例如,如果 B2 类(默认)的实例花费 5 分钟启动并处理请求,然后处于空闲状态,则 B2 的这 20 分钟将显示为 40 分钟(0.66 个“实例小时”)。
因此,在基本扩展模块的 2 小时运行时间内(挂钟时间),在单个实例上消耗 6 个“实例小时”,这并非不可能——只需要该实例具有足够高的实例类。
没有实例类算作 B1 的 3 倍;但例如实例类 B4 算作 B1 的 4 倍,因此它将在 1.5 小时的运行时间内消耗 6 个实例小时,每次计算空闲后的 15 分钟。
例如,如果 B4 实例在 2 小时内发出 6 个请求,间隔相等,且每个请求都“立即”处理(因此只计算空闲后的 15 分钟),则将显示为“6 个实例小时”(6 * 0.25 * 4),即后端“实例小时”8 小时“免费配额”的 75%。
如果您显示.yaml
配置模块的文件和活动模式(您可以从日志中的时间戳中看出),则可以检查这些假设。如果没有这些额外的信息,我们只能提出假设!-)