google-app-engine - 如何正确配置 GCP App Engine
问题描述
我正在努力理解我在设置 App Engine 实例时使用的几个术语的区别和好处:
我想知道服务器如何处理多个请求?是否需要为每个请求创建我的服务器代码的新实例,听起来不太可能,但我想澄清一下。或者它是否创建了我处理请求的函数的副本?我的一个典型功能如下所示:
app.get("/", limiter, async function(req , res){ try { my code } catch (err){ console.log(err); res.status(400).send('Something went wrong') } })
弹性环境与标准环境的关系是什么?
什么时候需要新实例?
我的 app.yaml 如下所示:
runtime: nodejs12
env: standard
manual_scaling:
instances: 1 // Is this a bad idea in production?
resources:
cpu: 1
memory_gb: 0.5
disk_size_gb: 10
请帮助我理解这一点,以便我可以正确设置我的实例。
解决方案
既不需要新的服务器,也不需要新的函数实例。相反,相同的函数(
async function(req , res)
在你的情况下)被同时调用多次。每个调用都将有一个单独的请求和响应实例(req
在res
您的情况下)。Standard和Flexible是 Google 提供的两种不同的 App Engine 产品,具有不同的功能和不同的定价。标准更具动态性(启动更快、部署更快、缩减到 0 个实例)。Flexible提供了更多选项(任何编程语言、对 Web 套接字的支持等)。有关更多详细信息,请参阅选择 App Engine 环境 。
除非您明确指定实例数,否则 Google App Engine 会监控请求延迟和可能的 CPU 负载,并会根据实际负载(可能在您设置的限制范围内)增加和减少正在运行的实例数。如果单个实例足以处理应用程序的负载,则可以将实例计数固定为 1。这是一个有效的设置。
推荐阅读
- typescript - 在使用 let 或其他方式在 TypeScript 中定义属性时,定义其类型的最佳实践或规则是什么?
- ibm-doors - 如何将图像插入到 DOORS 属性中
- git - 如何在更新/合并历史记录时执行 Git 合并
- reactjs - Child(...):渲染没有返回任何内容。这通常意味着缺少 return 语句。或者,不渲染任何内容,返回 null
- java - @ComponentScan 未检测到 bean
- python - Tensorflow / mobilenet 训练 / ValueError:不支持的 input_reader_config
- vuejs2 - 未捕获的引用错误:未定义 Vue(尽管文件中包含直接脚本)
- html - 如何以角度4在一个按钮到另一个按钮之间绘制相等的水平线
- github - 我可以限制 GitHub 中的提交吗
- database - 无法在 Android Pie (Android 9) 中打开数据库