【发布时间】:2020-08-29 15:07:54
【问题描述】:
我最近将 [python 2.7 / webapp2] 中内置的一个非常简单的项目移植到 [python 3.7 / Flask] 中,在上个月我看到 成本从 0 美元提高到 20 美元!
该项目非常简单(90 行代码):只是几个请求处理程序,它们根据查询字符串中传递的值返回不同的 json。除了语法略有不同外,代码几乎没有区别。流量和请求也没有太大变化,如果有什么变化的话。
在计费中,我可以看到前端工作时间如何显着增加,以及 GAE 如何比以前更频繁地启动更多实例。
有没有人经历过同样的行为? python 3.7 和 Flask 在 2.7 上是否比 webapp2“重”?
为了完整起见,两个版本都部署了标准原版gcloud app deploy,没有其他选项。它在 F1 实例上使用标准环境,没有后台工作人员或任务。 app.yaml 在与实例设置相关的部分几乎相同:
env: standard
instance_class: F1
automatic_scaling:
min_idle_instances: automatic
max_idle_instances: automatic
min_pending_latency: automatic
max_pending_latency: automatic
没有流量的版本,没有任何实例正在运行(它们无法停止,因此它们正在服务,但有 0 个实例)。
为了清楚起见,我可以附上新版本的图表,以及我暂时重新启用的旧版本。从图中可以清楚地看出,新设置如何无缘无故地启动实例,而旧设置如何保持一个很酷的平面 1 实例处于活动状态。
【问题讨论】:
-
经过进一步调查,我可以确认,与带有 webapp2 的 Python 2.7 相比,带有 Flask 的 Python 3.7 运行时的占用空间肯定更大。同一脚本的执行延迟在第 50/90/95 个百分位从平均 5ms/50ms/90ms 跃升至 15ms/90ms/120ms。这平均是 2 倍的增长,这很可能会触发 Google App Engine 调度程序启动额外的实例。
标签: python google-app-engine flask