我遇到了一个关于 AppEngine 行为的非常奇怪的问题。 我们目前正在从 1.9 版本迁移到 1.12,因为 1.9 将在 10 月 1 日之后过时。 一切顺利,所有 API 都迁移了,等等。在暂存环境(一个单独的 GC 项目几天)上进行了测试。

进入生产环境后,大约 6 小时(!)一切正常,之后所有请求都超时了。 以前的 1.9 版本保持活动状态,流量重新路由到它。

现在这似乎不是负载问题:在事件发生后部署 Go 1.12 运行时而不将其切换为活动版本并私下访问(单个请求!)如果应用程序处理程序必须发出任何请求,则无法及时处理:存储、数据存储区,甚至普通的 http 请求都不起作用! 例如,甚至将其缩小到:

将此代码放在 main 之前,其他一切都会在部署后产生超时!

AppEngine 标准环境。 去1.12。 所以没有urlfetch。 示例代码(甚至不需要请求,测试了多个 url,都在本地和 STG Google Cloud 项目上使用相同的代码):

func main() {
    fmt.Printf("Testing request to external server\n")
    resp, err := http.Get("https://www.example.com")
    if err != nil {
        fmt.Printf("Error making request to external server: %v\n", err)
    }

    data, err := ioutil.ReadAll(resp.Body)
    if len(string(data)) > 255 {
        fmt.Printf("Content: %v\n", string(data)[0:255])
    } else {
        fmt.Printf("Content: %v\n", string(data))
    }
    resp.Body.Close()
    ...
    log.Fatal(http.ListenAndServe(fmt.Sprintf(":%s", port), r))
}

部署后实例启动期间出现此消息

Error making request to external server: Get https://www.example.com: dial tcp 123.123.123.123: i/o timeout
Start program failed: failed to detect app after start: ForAppStart(): [aborted, context canceled. subject:"app/valid" Timeout:30m0s, attempts:6073 aborted, context canceled. subject:"app/invalid" Timeout:30m0s, attempts:6074]

(第二行是可以理解的——它只是无法连接并等待太久)。

最奇怪的是,如果将此代码部署在它的工作环境(完全相同的文件)上。 好像GAE用尽了几个小时的连接尝试或类似的生产环境(这是一个相当高的项目),并且无法继续进行。

这种行为可能是什么问题? 这是一个错误吗? 什么可能泄漏以及如何诊断? 我的想法用光了,用谷歌搜索了几个小时,任何帮助将不胜感激。

  ask by Anton Z. translate from so

本文未有回复,本站智能推荐:

1回复

在App Engine的灵活环境中发出HTTP Get请求

我在App引擎中使用灵活环境,我想在我的代码中发送HTTP Get请求。 当我运行应用程序时,出现以下错误: https : //www.google.com/ :不是App Engine上下文 上面的代码在标准环境中有效,但在灵活环境中不起作用。
1回复

无法在 Go 中设置 AppEngine 的 Memcache

我一直在尝试使用 AppEngine 的 Memcache。 请注意,我指的是 AppEngine 中包含的那个; 我试图避免 MemoryStore 因为它的成本:在 AppEngine 中有免费的替代品,我更喜欢尝试使用那个替代品。 事实是,虽然我可以从网络添加值,但我无法设法在 Go 中
1回复

Go,Appengine,SMTP,Gmail

出于某种原因,我无法弄清楚如何使用Gmail帐户,Appengine和Golang发送电子邮件。 这就是我所做的: 我访问了Google云端平台> Appengine>设置>选择项目,我在Email API授权发件人上添加了gmail帐户。 我试图使用( ht
1回复

Go - AppEngine - 性能

我有一个Go应用程序在POST中接收JSON并将其存储在数据存储区(AppEngine)中 前24小时的统计数据: 40个实体存储在数据存储区中。 (每个实体小于1K,JSON具有7-10个字段) 7.20实例小时消耗。 7个小时远远超出我的预期。 我希望看到7秒甚至1秒。
3回复

我无法使用google.golang.org/appengine模块将Go模块部署到App Engine

从我可以阅读的最新资料,以及基于某些API的文档(例如, Go数据存储API ),我应该使用google.golang.org/appengine等而不是旧的appengine/...路径。 但是,当我尝试使用gcloud预览应用程序部署进行部署时,出现以下错误: 部署包含无法编译的
1回复

App Engine / Go:“ goapp服务”给出错误“无法构建Go应用程序”错误

我试图将Go与App Engine SDK for Go一起使用,当我运行goapp serve ,进入http:// localhost:8080后在打印浏览器时出现以下错误(在终端中出现类似错误): 无法构建Go应用程序。 (执行的命令:C:\\ go_appengine
2回复

AppEngine / Go应用程序无法编译。 我错过了什么?

我正在尝试测试AppEngine / Go应用程序。 我启动dev_appserver.py并开始为应用程序提供服务,但是当我在浏览器中访问localhost:8080时,我得到: 我觉得我需要做一些事情来让特定于AppEngine的库在GO期望的地方可用,但我真的不想在AppEngi
2回复

通过Go库部署App Engine

我是Google App Engine的新手。 而且,我遇到了无法解决的问题。 我有一个非常简单的应用程序(在Go中开发),如下所示: 这些是main.go的导入: 我的代码在本地运行时效果很好。 但是,当我尝试将其发布到我的Google App Engine实例上