【问题标题】:Why is Go program hanging on gcloud app deploy?为什么 Go 程序挂在 gcloud app deploy 上?
【发布时间】:2020-07-07 20:11:08
【问题描述】:

我正在尝试在 github 上设置以下存储库的本地版本,https://github.com/microsoft/mouselog,除了添加具有以下内容的 app.yaml 之外,我没有进行任何更改。

runtime: go112
env: standard

service: mouselogserver

当我使用 CLI 工具运行 gcloud app deploy 时,它会在以下命令处挂起至少 15 分钟。

DEBUG: Executing command: [u'mydir\\google_appengine\\go-app-stager.exe', u'mydir\\server\\app.yaml', u'mydir\\server', 'mydir\\local\\temp\\tmpdtk2gh\\tmpqcbdbm']

我假设这不是预期的行为?使用 nodejs 运行 gcloud app deploy 最多需要 30 秒。

【问题讨论】:

  • 能否请您确认一下,您也在使用 mouselogserver for Node.js?据我所见,在后端使用 mouselogserver 时,使用的是 Go。我想知道您在使用 Node.js 运行什么以便进一步排除故障。谢谢
  • 我在自己的服务上运行项目的前端,默认情况下使用 nodejs。 github.com/microsoft/mouselog/tree/master/web
  • 以前的部署速度更快吗?那么,什么时候开始增加部署时间?
  • @eespinola 这是我第一次运行 go,我实际上能够部署。只用了 25 多分钟,这是正常的部署时间吗?

标签: go google-app-engine gcloud


【解决方案1】:

通常预计部署不会花费 25 分钟。我将在下面解释一种可能的原因。

App Engine 部署与存储桶 staging.<project-id>.appspot.com 交互。此存储桶在您首次部署到 App Engine 时默认创建,用于存储中间构建输出,以便以与 Docker 层类似的方式缩短即将进行的部署时间。大多数情况下,这有助于通过不需要“重新构建”未更改的部分来提高部署速度。

存储在暂存桶中的文件会在插入 15 天后被清除。但是,如果应用程序在短时间内大量部署文件并更改文件,则会在存储桶中创建大量临时对象并且其大小会增长。这可能会减慢部署速度,因为所有这些都将被扫描以搜索可重用的中间构建。

如果这听起来像您的用例,有一种解决方法是使用 gcloud flag --bucket,它允许使用用户提供的存储桶而不是暂存存储桶。

gcloud app deploy --bucket <YOUR-BUCKET>

不过,如果这不能解决问题,您可能需要开立支持票,以便进一步调查问题,因为我们自己缺乏工具。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-22
    • 1970-01-01
    • 1970-01-01
    • 2017-01-09
    • 1970-01-01
    相关资源
    最近更新 更多