Go 如何处理 Google App Engine 上的并发请求

2024-02-07

我对 Go 如何处理 Google App Engine 上的并发请求有点困惑。所以我希望有人能提供一些澄清。

以下是我收集到的事实:

  1. Go 在 App Engine 上是单线程的。 -这是因为可以通过使用多个线程创建竞争条件来执行任意指针算术 https://stackoverflow.com/a/11443482/236564

  2. Goroutines 被多路复用到多个操作系统线程上,因此如果其中一个线程发生阻塞(例如在等待 I/O 时),其他线程会继续运行。 http://golang.org/doc/effective_go.html#goroutines

  3. [App Engine 有]10 个并发限制,[该限制]是通过每个运行时的并发线程限制来强制执行的。大多数情况下,我们的调度程序将尝试启动一个新实例。 https://stackoverflow.com/a/11443482/236564

如果 Go 在 App Engine 上是单线程的,那么第 3 点就没有意义了。这就留下了 1 和 2。如果 App Engine 上的 Go 是单线程的,并且需要线程在阻塞 I/O 时继续执行,那么 App Engine Go 实例似乎会在等待 I/O 时阻塞所有 goroutine。

它是否正确?如果不是,Go 的并发性如何在 App Engine 上真正发挥作用?

帮助量化事物。如果我将连接保持打开状态 30 秒。单个 AE Go 实例可以维持多少并发连接?

谢谢。

编辑:这是功能请求,它将允许 Go 实例 处理超过 10 个并发请求允许配置限制 每个并发请求数 实例 http://code.google.com/p/googleappengine/issues/detail?id=7927。 请加星标。


一个 Go App Engine 实例允许 10 个并发请求,但仅运行 1 个 CPU 线程。实际上,可以同时处理多个请求,但一次只有一个请求能够执行 CPU 工作。例如,如果一个请求正在等待数据存储 API 调用返回,则同一实例可以自由处理另一个请求。

您的陈述“如果 Go 在 App Engine 上是单线程的,那么第 3 点就毫无意义了。”是不正确的。对单个 Go App Engine 实例的并发正在进行的请求仍然存在 10 个限制。当文档谈到“线程”时,用词有点松散。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Go 如何处理 Google App Engine 上的并发请求 的相关文章

随机推荐

  • 如何在android上创建永久后台服务

    我正在经历一场噩梦 试图在 android 上创建一个永久运行的简单后台服务 该服务将执行一些后台任务 例如池用户社交媒体和显示通知 因此它只需要一次用户交互 登录 之后应该能够永远运行直到最后一天 但这并没有发生 这是我的清单
  • viewflow.io:实现队列任务

    我想用以下用例来实现ViewFlow库 http viewflow io Problem 由用户启动的特定 Flow 的进程必须在执行 celery 作业之前在队列中等待 每个用户都有一个这些进程的队列 根据计划或手动触发 允许队列中的下一
  • 如何以编程方式在视图上同时应用平移和缩放动画

    如何在视图上应用带有缩放动画的平移动画 我必须将视图移动到另一个视图位置并同时缩小 如何将视图从其位置缩放到另一个视图位置 第二个视图不固定 startView 翻译的视图 finishView 动画结束的地方 代码 private voi
  • Python:什么是标题? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我对 Python 和一般编程都很陌生 我在大学修读一个模块 要求我用 Python 编写一些相当基本的程序 然而 我在上次作业中得到了这样
  • 将 musicbrainz URI 映射到 Spotify URI

    有谁知道如何找到给定艺术家 专辑的 musicbrainz URI 的 Spotify URI Spotify 的 web api 不能解决我的问题 因为我想映射所有 musicbrainz 艺术家和专辑 但速度很慢 您应该能够使用 Ech
  • Android Studio 3.1:找不到 org.jetbrains.trove4j:trove4j:20160824

    昨天 我将 Android Studio 更新到 3 1 但收到此错误 Could not find org jetbrains trove4j trove4j 20160824 Searched in the following loca
  • Blobstore 上传 + Ajax/替代方案

    下面的代码可以完美运行 我唯一关心的是我想将下面的内容转换为 AJAX alternative 这样就不需要刷新整个页面来提交此请求 如果可能的话 还包括加载进度条等
  • 在节点中使用 zone.js 挂钩

    我正在尝试使用编写一个简单的演示角度 zone js https github com angular zone js在节点中 但由于某种原因既没有beforeTask or afterTask正在被召唤 这是我正在运行的代码 requir
  • Indy 10 中的 TIdHTTP

    我以前在 Delphi 6 天时就使用过 Indy 现在我正在使用 Indy 10 我想做的事情非常简单 但我没有看到简单的方法 所以我一定错过了一些东西 我想做的是这样的 这是我正在使用的实际代码 procedure TForm1 btn
  • 如何从 URL 流式传输/下载和播放音频?

    我需要在 iOS 上运行的 Unity3D 中流式传输或下载并播放从 URL 获取的音频 音频来自文本转音频服务 我需要在 Unity 上播放它 我一上午都在谷歌上搜索 没有找到有效的解决方案 Unity3D文档中有一个代码片段 WWW音频
  • 从Java访问gradle资源

    我有一个具有这种结构的基于 gradle 的 java 项目 myproject src main java resources myresource xml build classes main myresource xml resour
  • 雅虎财经 V7 API 现在需要 cookie? (Python)

    url https query2 finance yahoo com v7 finance quote symbols TSLA fields regularMarketPreviousClose region US lang en US
  • 在使用 fit_generator 和 evaluate_generator 训练网络时,如何绘制 AUC 和 ROC?

    我正在使用生成器来训练和预测数据的分类 这是一个例子图像数据生成器 https blog keras io building powerful image classification models using very little da
  • 在同一服务器上加载同一项目的不同版本的配置文件的最佳方法是什么?

    我有一个大型 php 项目 依赖于两个级别的配置文件 在我的项目文件夹中 我有一个 default config ini 它被加载 然后与站点特定的配置文件合并 目前代码正在读取环境变量PROJECT CONFIG指向特定的配置文件 这对于
  • 我应该通过 SessionAware 还是 ActionContext 获取会话?

    在阅读了通过以下方式获取会话映射之间的差异之后ActionContext getContext getSession 并让它注入SessionAware我想知道哪种方法是首选方法 为什么 该API推荐使用SessionAware 我在网上读
  • 为什么 GetMessageW 会在我的 WPF 应用程序中占用大量 CPU 使用率?

    我在这里遇到了一个严重的难题 我正在调查应用程序中 WPF 组件的性能问题 我们的 net 应用程序非常大 并且几乎完全采用 Windows 窗体 作为新计划的一部分 我们使用丰富的 WPF 用户界面重写了我们的核心组件之一 有很多 Win
  • 为什么 git merge 有时会创建提交,有时不会?

    当我做git merge从另一个分支到当前工作区 git 有时会进行新的提交 Merge remote tracking branch xxx into xxx 有时 它不会 Fast forward src files 那么什么决定了是否
  • Mongoose findOne 在嵌套记录上无法按预期工作

    我在 MongoDB 中有一个集合 其简化版本如下所示 Dealers Id 123 Name Someone Email email protected cdn cgi l email protection Vehicles Id 123
  • 找不到 momd 文件:核心数据问题

    噢天啊 我搞砸了一些事情 我是一名 Core Data 菜鸟 正在开发我的第一个 iOS 应用程序 经过多次堆栈溢出后 我正在使用以下代码 NSString path NSBundle mainBundle pathForResource
  • Go 如何处理 Google App Engine 上的并发请求

    我对 Go 如何处理 Google App Engine 上的并发请求有点困惑 所以我希望有人能提供一些澄清 以下是我收集到的事实 Go 在 App Engine 上是单线程的 这是因为可以通过使用多个线程创建竞争条件来执行任意指针算术 h