- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我遵循了 App Engine 灵活环境上的 Nodejs 教程: https://cloud.google.com/appengine/docs/flexible/nodejs/create-app
在成功部署并测试了本教程后,我更改了代码以进行一些实验并成功部署它......然后让它运行,因为这是一个测试环境(不公开)。
一个月后,我收到了来自 Google 的超过 370 美元的帐单!
在交易详情中,我看到以下内容:
Oct 1 – 31, 2017 App Engine Flex Instance RAM: 5948.774 Gibibyte-hours([MYPROJECT]) $42.24
Oct 1 – 31, 2017 App Engine Flex Instance Core Hours: 5948.774 Hours ([MYPROJECT]) $312.91
这个几乎有 0 个请求的测试环境如何需要大约 6,000 小时的资源?在最坏的情况下,我会假设 720 小时全职运行一个月 @ 每小时 0.05 美元将花费我约 40 美元。 https://cloud.google.com/appengine/pricing
有人可以帮忙解释一下吗?我一直无法弄清楚为什么需要这么多资源?
感谢您的帮助!
更新:请注意,我确实对 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
因此,就我而言,在不知情的情况下,我创建了我的简单 Node 应用程序的多个版本。这些版本仍在运行,以防出现错误后需要切换。但是这些版本也需要实例,除非在 app.yaml 中说明,否则默认为 2 个实例。
谷歌说:
App Engine by default scales the number of instances running up anddown to match the load, thus providing consistent performance for yourapp at all times while minimizing idle instances and thus reducingcost.
但是,根据我的经验,情况并非如此。正如我之前所说,我使用 nodemon 推送了我的 Node 应用程序,这似乎导致了错误。
最后,按照教程并没有关闭项目,我有 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 以强制使用最少的资源仅使用 1 个实例:
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
我希望教程中包含其中一些步骤,以保护那些尝试学习和实验的人,但事实并非如此。
如果不了解所有这些细节,Google App Engine Flex 环境可能会很棘手。一位 friend 向我介绍了 Heroku,它既有固定价格,也有免费/爱好优惠。我能够在那里快速推送一个新的 Node 应用程序,它就像魅力一样! https://www.heroku.com/pricing
学习这一课“只”花了我 500 美元,但我希望这对其他关注 Google App Engine Flex Env 的人有所帮助。
关于node.js - Google App Engine Flexible env 的定价,500 美元的类(class),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47125661/
阿里团队开源的一个库。flexible.js,主要是实现在各种不同的移动端界面实现一稿搞定所有的设备兼容自适应问题。 实现方法: 通过JS来调整html的字体大小,而在页面中的制作稿则统一使用r
我正在尝试制作一个可能有一些长文本的小部件,我想用几行换行。 我正在尝试使用“ Flexible ”小部件来包装我的 Text但它仍然溢出,我不知道出了什么问题。 这是正在发生的事情: 这是我的 Co
match value with | :? list as l -> l //Is it possible to match any list of a type derived from SomeT
我是 Cassandra 的新手,可以在下面的维基百科中找到。 列族(自 CQL 3 起称为“表”)类似于 RDBMS(关系数据库管理系统)中的表。列族包含行和列。每行都由行键唯一标识。每行有多个列,
下面是我的 R 代码,它接受向量 a 并返回向量 b。向量 b 应该是具有特定格式的向量 a 的唯一标识符。请注意,a 是按所有相同的数字并排排列的。 a <- c(1, 1, 1, 2, 2, 2,
我有以下 df。 data = [ ['DWWWWD'], ['DWDW'], ['WDWWWWWWWWD'], ['DDW'], ['WWD'], ] df
我有一个包含评论的 mysql 表。评论可以有子评论,但只有下一级(有一个可选的“parent”属性,评论的父评论不能有自己的父评论)。我想对此类数据进行分页,如下所示: 取第一个,比如 10 个顶级
我想执行以下操作: if(x == true) { // do this on behalf of x // do this on behalf of x // do this
我正在为 OpenGL 3.1 设计渲染系统(目前仅限于 2D)。我真正想做的是考虑优雅的设计模式,这样我就不必担心一些难以维护和调试的乱七八糟的东西。 起初,我的想法是拥有一个模板化的基类,其函数接
我正在为许多不同的客户构建网络服务以连接到汽车零件数据库。该部件具有多种特性。不同的客户将需要不同的属性子集来“做他们的事”。 所有客户至少需要一个 ID、一个部件号和一个名称。有些可能需要价格,有些
我不确定标题是否清楚。我不太确定我要寻找的答案是什么。我一直在寻找和寻找,但似乎找不到答案。 这是我想做的: 我希望用户创建包含 x 组、x 次数和 x 类型的锻炼。 例如,我知道我可以做到; cre
当编写一个库或模块的公共(public) API 时,将在各种用例中被许多其他代码使用,平衡灵 active 和易用性的最佳方法是什么?我相信这两者经常发生冲突,你做的东西越灵活,就越难让它做好任何一
我这里可能有错误的“模式”,但我认为这是一个公平的话题。 我有一个ASP.Net MVC应用程序,它在其中调用WCF服务以获取将要呈现的ViewModel。 (之所以使用WCF服务,是因为其他小型MV
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 3 年前。 Improve this ques
我试图让下面的 div 变得灵活 div { min-width: 500px; max-width: 1000px; width:100%; height: 400px; margin-left:1
我需要什么:我需要值名称文本(左对齐)和值本身(右对齐)在 中元素。一定要灵活(输入宽高会变化) 我制定了涉及 的静态解决方案和一些 css,但它不灵活。我正在根据设备视口(viewport)调整
我的目标是创建一个 3 列布局: 第一列可以取任意宽度:它会通过 JS 改变 第二列尽可能多地占用空间 第三列固定宽度 #red { background-color:red; display
我需要为一个非常灵活的 XML 文件创建一个架构。它必须满足以下要求: 验证我们要求存在的一些元素,并知道它们的确切结构 验证一些可选的元素,我们知道的确切结构 允许任何其他元素 以任何顺序允许它们
在我的 flutter 应用程序中,我想要一张卡片和四个水平对齐的盒子,里面的宽度和高度都相等。代码如下; @override Widget build(BuildContext c
我正在尝试创建一个 Sticky Header,如果用户在左侧网格中选择更多文档(未图示),Sticker Header 可以在其中增长(绿色框)。 其他所有内容都应相应地向下推(在蓝色框中)。不确定
我是一名优秀的程序员,十分优秀!