【问题标题】:GAE Go runtime 1.11 needs more instances than runtime 1.9. It this common?GAE Go 运行时 1.11 需要比运行时 1.9 更多的实例。这么常见吗?
【发布时间】:2020-02-27 08:55:03
【问题描述】:

由于我们按照 Google 的要求从 go 1.9 迁移到了 go 1.11,我们注意到 GAE 需要双倍或三倍数量的实例来处理相同的流量。

代码逻辑几乎相同,因为我们还没有时间用 Go 1.12 重写应用程序。我们仍在使用google.golang.org/appengine,而不是新的 SDK。

我只是想知道其他人是否有类似的经历?

【问题讨论】:

  • 我没有这个比较,但是根据cloud.google.com/appengine/docs/standard/runtimes,go 1.9 和 go 1.11 之间存在一些细微差别。具体来说,go 1.11 对网络调用没有限制,并允许对 /tmp 进行读/写。您可能需要进行一些跟踪以查明任何额外的延迟,或者之前和之后的内存/cpu 使用情况是否存在差异。
  • 有趣的是基于日志,go runtime 1.11 中的应用程序似乎运行得更快,延迟更低。当我查看 GCP 中的实例 UI 时,我可以看到相当多的实例,它们的工作量并不大。好吧,当您拥有比需要更多的实例时,这是意料之中的。

标签: google-app-engine go google-cloud-platform


【解决方案1】:

如果您认为实例数量超出需要,可以尝试手动缩放,尝试一些测试并检查性能。

【讨论】:

    【解决方案2】:

    这个问题似乎与 Go 运行时 1.9 中的一个错误有关

    Go 1.9 运行时存在忽略 max_concurrent_requests 设置的已知问题。 Go 1.11 和更新的运行时尊重您项目的 app.yaml 文件中 max_concurrent_requests 设置的值。

    https://cloud.google.com/appengine/docs/standard/go111/go-differences

    这意味着当您在两个版本的 yaml 文件中具有相同的 max_concurrent_requests 时,结果可能会大不相同。

    我仍在试图弄清楚“忽略”究竟是什么意思。谷歌支持人员建议这意味着 Go 运行时 1.9 总是在 10 个 max_concurrent_requests 上运行。目前我对这个结论存有疑问。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-28
      • 2021-07-08
      • 1970-01-01
      • 2015-12-22
      • 2020-12-03
      • 1970-01-01
      相关资源
      最近更新 更多