【问题标题】:Are GAE instances limited to 10 concurrent request?GAE 实例是否限制为 10 个并发请求?
【发布时间】:2012-07-11 16:57:45
【问题描述】:

我从多个来源获悉,Google App Engine 实例的硬性限制为 10 个并发请求。我想知道是否有人可以澄清这到底是什么意思。

调度程序是否阻止任何超过 10 个的请求,还是通过限制并发线程来强制执行?

具体来说,此限制对 Go 实例的影响与对 Python 和 Java 的影响相同吗?

编辑:这是允许 App Engine 实例执行的功能请求 处理超过 10 个并发请求/线程。 Allow configurable limit of concurrent requests per instance。 请给它加星标。

【问题讨论】:

    标签: java python google-app-engine go


    【解决方案1】:

    截至 2012 年 7 月 12 日,是后者。 10 个并发限制是通过限制每个运行时的并发线程来实施的。大多数情况下,我们的调度程序会尝试启动一个新实例。

    另请参阅 jonmac 在此线程上的电子邮件: https://groups.google.com/d/msg/google-appengine/y-LnZ2WYJ5Q/j_w13F4oSSkJ

    【讨论】:

    • 谢谢高志。只是为了澄清 Go 运行时是多线程的?另外,您是否知道增加线程限制的功能请求。我无法通过搜索找到一个。
    • Go 运行时在 GAE 上是单线程的 (GOMAXPROCS=1)。这样做的原因是可以通过创建多个线程的竞争条件来进行任意指针运算。不过不用担心,您仍然可以通过生成数千个 goroutine 在 Go 中编写并发程序。
    • @tux21b 谢谢。那么这是否意味着 10 个并发线程的限制不会对 Go Apps 产生不利影响?我仍在努力解决这个问题。当请求被 I/O 阻塞时,我认为 Go 在 OS 线程上多路复用 goroutine。如果是这种情况并且 Go 运行时是单线程的,那么任何 I/O 调用会阻塞整个实例吗?
    • @tux21b 我为此创建了一个单独的问题stackoverflow.com/questions/11446602/…
    【解决方案2】:

    此问题已于 2013 年 11 月 18 日修复。

    现在可以通过max_concurrent_requests 设置配置任何 GAE 实例可以处理的最大请求数,例如:

    runtime: go
    api_version: go1
    automatic_scaling:
      max_concurrent_requests: 80
    
    handlers:
      - url: /.*
        script: _go_app
    

    默认为 8,最大值为 80。

    请参阅https://cloud.google.com/appengine/docs/python/config/appref#automatic_scaling 了解更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多