Node.js 中 GAE 基本扩展的并发性
Posted
技术标签:
【中文标题】Node.js 中 GAE 基本扩展的并发性【英文标题】:Concurrency with GAE basic scaling in Node.js 【发布时间】:2019-10-02 13:07:36 【问题描述】:我正在尝试通过将 Google Cloud Tasks 与运行 node.js 的 Google App Engine 一起使用来运行较长的任务(>10 分钟)。
目标是其他应用将数百个任务推送到 Cloud Tasks 队列,并且 Google App Engine 的每个实例将一个一个地处理这些任务。我正在使用所谓的 basic_scaling
选项来允许任务运行长达 24 小时(与 automatic_scaling
的 10 分钟限制相比)。
目前它可以工作,但似乎一个实例一次处理多个请求。
有没有办法通过“基本”扩展选项限制每个实例的最大并发请求数?
【问题讨论】:
【参考方案1】:在官方文档中,Establish Rate Limits 下有两个标志可用于配置队列速率限制:
--max-dispatches-per-second=[DISPATCH_RATE]
--max-concurrent-dispatches=[MAX_RUNNING]
如果您试图确保一次只处理一项任务,那么--max-concurrent-dispatches
似乎是您的解决方案。
【讨论】:
如果我在basic_scaling
中设置max_instances: 3
以运行最多3 个实例会怎样。我设置--max-concurrent-dispatches=3
来完成由 3 个实例处理云任务,但每个实例一次只能处理一个任务。不幸的是,看起来任务将这 3 个并发请求发送到一个实例,而没有创建其他两个实例。从 GAE basic scaling 的文档中,我不明白它在什么条件下会启动额外的实例。你呢?
根据cloud.google.com/appengine/docs/standard/nodejs/config/…默认是10,听起来您希望App Engine以“1”的并发运行。
您指的是automatic_scaling.max_concurrent_requests
,但我的问题是针对basic_scaling
。为什么我关心基本缩放是上面描述的超时问题。以上是关于Node.js 中 GAE 基本扩展的并发性的主要内容,如果未能解决你的问题,请参考以下文章