我遵循了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
经过与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的建议:
首先,请设置帐单预算和提醒,以免被自动计入CC的昂贵发票所困扰:https://cloud.google.com/billing/docs/how-to/budgets
在测试环境中,您很可能不需要多个版本,因此在部署时,请使用以下命令: $ gcloud app deploy –version v1
更新您的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
有关更多信息,请参见此博客文章: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的人有所帮助。