一尘不染

Google App Engine Flexible环境的定价,一堂$ 500的课程

node.js

我遵循了App Engine Flexible的Env教程@上的Nodejs:https://cloud.google.com/nodejs/getting-started/hello-world

成功部署并测试了本教程后,我将代码进行
了一些实验,然后成功部署了该代码……然后
由于它是一个测试环境(非公开)而继续运行。

一个月后,我收到了Google寄来的一笔超过370美元的帐单!

在交易明细中,我看到以下内容:

2017年10月1日至31日,App Engine Flex实例RAM:5948.774 Gibibyte-hours
([MYPROJECT])$ 42.24

2017年10月1日至31日,App Engine Flex实例的核心小时数:5948.774小时
([MYPROJECT])$ 312.91

这个几乎有0个请求的测试环境如何需要约6,000个
小时的资源?在最坏的情况下,我会假设
一个月有720个小时的全职工作,每小时$ 0.05,那么我就要花$ 40左右。
https://cloud.google.com/appengine/pricing

有人可以帮助阐明这一点吗?我无法找出为什么
需要这么多资源?

谢谢您的帮助!

有关更多数据,这是上个月的流量(基本上为0):
交通数据

和实例数据实例数据

更新:请注意,我确实对package.json进行了修改:我将
nodemon 添加为依赖项,并将其添加为“ nmp start”脚本的一部分。尽管
我怀疑这解释了6000个小时的资源:

  "scripts": {
    "deploy": "gcloud app deploy",
    "start": "nodemon app.js",
    "dev": "nodemon app js",
    "lint": "samples lint",
    "pretest": "npm run lint",
    "system-test": "samples test app",
    "test": "npm run system-test",
    "e2e-test": "samples test deploy"
  },

App.yaml(默认值-与教程无变化)

runtime: nodejs
env: flex

阅读 280

收藏
2020-07-07

共1个答案

一尘不染

经过与Google的多次来回交流,以及数小时的博客阅读和
报告阅读,我终于(某种程度上)找到了一个解释
。我将在这里发表我的建议,以便其他人也不会
成为这个问题的受害者。

请注意,这对于某些人来说似乎很明显,但是作为GAE的新用户,所有这些
对我来说都是全新的。

简而言之,当部署到GAE并使用以下命令“ $ gcloud
app deploy ”时,它将创建一个新版本并将其设置为默认版本,而且
更重要的是,它不会删除已
部署的先前版本。

有关版本和实例的更多信息,请参见以下网址:https :
//cloud.google.com/appengine/docs/standard/python/an-overview-of-app- engine

因此,就我而言,我不知道它是否创建了
简单节点应用程序的多个版本。这些版本仍在运行,以防
出现错误后需要进行切换。但是这些版本也需要实例,
除非在app.yaml中声明,否则默认实例为2个实例。

Google说:

默认情况下,App Engine会按比例缩放运行和下降的实例数量以
匹配负载,从而始终为您的应用提供一致的性能,
同时最大程度地减少空闲实例,从而降低成本。

但是,根据我的经验,事实并非如此。如前所述,我
使用nodemon推送了我的节点应用程序,这似乎导致了错误。

最后,在完成本教程并没有关闭项目的情况下,我有4个
版本,每个版本有2个实例,全职运行1.5个月,服务0个
请求并生成大量错误消息,这花了我500美元。

如果您仍然想使用GAE FLEX ENV的建议:

  1. 首先,请设置帐单预算和提醒,以免被自动计入CC的昂贵发票所困扰:https://cloud.google.com/billing/docs/how-to/budgets

  2. 在测试环境中,您很可能不需要多个版本,因此在部署时,请使用以下命令:
    $ gcloud app deploy –version v1

  3. 更新您的app.yaml以仅使用最少的资源强制执行一个实例:

>     runtime: nodejs
>     env: flex
>  
>     # This sample incurs costs to run on the App Engine flexible
> environment.
>     # The settings below are to reduce costs during testing and are not
> appropriate
>     # for production use. For more information, see:
>     # https://cloud.google.com/appengine/docs/flexible/nodejs/configuring-
> your-app-with-app-yaml
>     manual_scaling:
>       instances: 1
>     resources:
>       cpu: 1
>       memory_gb: 0.5
>       disk_size_gb: 10
  1. Set daily spending limit

有关更多信息,请参见此博客文章:https : //medium.com/google-cloud/three-simple-steps-to-save-costs-when-prototyping-with-app-engine-flexible- environment-104fc6736495

我希望这些步骤中的某些步骤已包括在本教程中,以保护尝试学习和尝试的人,但事实并非如此。

如果不了解所有这些详细信息,则Google AppEngineFlex环境可能会很棘手。一个朋友向我指出了Heroku,它既有定价又有
免费/业余爱好优惠。我能够在那里快速推送一个新的节点应用程序,它的工作原理很吸引人!https://www.heroku.com/pricing

“仅”花了我$ 500来学习本课程,但我希望这对其他使用Google App Engine Flex Env​​的人有所帮助。

2020-07-07