为什么 Google Cloud Run 的最大并发请求数如此之低(1000),而应用服务器框架可以支持每秒多个 1000?

Waj*_*ath 3 node.js firebase google-cloud-platform google-cloud-functions

谷歌云运行文档页面:

并发是可配置的。默认情况下每个Cloud Run容器实例最多可以同时接收80个请求;您可以将其增加到最大值 1000。

如果我的应用程序是用 Node.js express/fastify 编写的,它可以轻松支持超过 1000 个。请参阅基准测试

Fastify: 56457 req/sec (50x Cloud Run's max)
Express: 11883 req/sec (11x Cloud Run's max)
Run Code Online (Sandbox Code Playgroud)

我了解实际结果可能会低于上述结果。但我希望它仍然可以支持远远超过 1000 个的数据。

虽然服务器框架支持更高的并发性,但为什么 Google Cloud Run 将其限制为最大单个 1000?

(在 Google Cloud Run 中运行的Firebase Functions v2也是如此。因此,在问题中也标记了 firebase)

gui*_*ere 15

你犯了一个错误。

  • 以Cloud Run限制为例:最多可以同时处理1000个请求
  • 看看你的测试结果:每秒 56457 个请求。

现在,错误。想象一下您的请求在 20 毫秒内得到处理,即 1/50 秒。如果每 1/50 秒处理 1000 个并发请求,则每秒可以处理 50000 个请求。

Cloud Run 对每秒请求数没有限制,但对同一实例上同一时间的并发请求数没有限制(由于 Google 负载均衡和流量路由基础设施,1000 应该是一个限制)