【发布时间】:2020-04-24 07:44:20
【问题描述】:
我正在尝试在 Heroku 中部署一个 Golang 应用程序。我收到 H13 错误,不知道如何解决。
应用程序查询数据库并返回结果表。数据库小,查询小。它在8080端口本地运行,完全没有问题。
当您的 web dyno 中的进程接受 连接,但随后关闭套接字而不向其写入任何内容。
可能发生这种情况的一个例子是 Unicorn Web 服务器 配置了一个小于 30 秒的超时并且没有请求 在超时发生之前由工作人员处理。在这种情况下, Unicorn 在写入任何数据之前关闭连接,导致 一个 H13。
据我所知,我并没有运行 Unicorn Web 服务器(尽管我不得不首先配置服务器,这超出了我的舒适范围)。我正在从 vanilla net/http 包运行应用程序 - 没有路由附加组件或类似的东西。我做了一些谷歌搜索并尝试延长超时时间,如下所示:
s := &http.Server{
Addr: ":8080",
ReadTimeout: 5 * time.Second,
WriteTimeout: 10 * time.Second,
IdleTimeout: 120 * time.Second,
}
if len(os.Getenv("PORT")) > 0 {
s := &http.Server{
Addr: ":" + os.Getenv("PORT"),
ReadTimeout: 50 * time.Second,
WriteTimeout: 100 * time.Second,
IdleTimeout: 1200 * time.Second,
}
log.Fatal(s.ListenAndServe())
}
log.Fatal(s.ListenAndServe())
ListenAndServe() 通常在 http 对象上调用。在这里,我创建了一个服务器对象并为其提供了大规模延长的超时时间,然后为此调用了ListenAndServe(),但我没有取得任何进展。一直都是同样的H13 错误。
这些是错误日志:
2020-01-06T18:46:20.771328+00:00 heroku[web.1]: Unidling
2020-01-06T18:46:20.776052+00:00 heroku[web.1]: State changed from down to starting
2020-01-06T18:46:21.616792+00:00 heroku[web.1]: Starting process with command `bin/gowebappdatabase`
2020-01-06T18:46:24.357786+00:00 heroku[web.1]: State changed from starting to up
2020-01-06T18:46:24.284251+00:00 app[web.1]: Incipio - I begin.
2020-01-06T18:46:25.826969+00:00 app[web.1]: 2020/01/06 18:46:25 http: panic serving 10.71.246.139:27839: dial tcp: lookup port=0: no such host
2020-01-06T18:46:25.827017+00:00 app[web.1]: goroutine 20 [running]:
2020-01-06T18:46:25.827020+00:00 app[web.1]: net/http.(*conn).serve.func1(0xc0001100a0)
2020-01-06T18:46:25.827022+00:00 app[web.1]: /app/tmp/cache/go1.12.12/go/src/net/http/server.go:1769 +0x139
2020-01-06T18:46:25.827024+00:00 app[web.1]: panic(0x7e4280, 0xc00010e320)
2020-01-06T18:46:25.827026+00:00 app[web.1]: /app/tmp/cache/go1.12.12/go/src/runtime/panic.go:522 +0x1b5
2020-01-06T18:46:25.827028+00:00 app[web.1]: github.com/amunnelly/gowebappdatabase/dbconnect.runQuery(0xc000150160, 0x150, 0x0)
2020-01-06T18:46:25.827031+00:00 app[web.1]: /tmp/build_b7c9c282f9c067c1b5b5cede1994472d/dbconnect/connectdb.go:78 +0xff
2020-01-06T18:46:25.827033+00:00 app[web.1]: github.com/amunnelly/gowebappdatabase/dbconnect.PointsGdTableQuery(0xc000150160, 0x150, 0x0, 0x0, 0x0)
2020-01-06T18:46:25.827035+00:00 app[web.1]: /tmp/build_b7c9c282f9c067c1b5b5cede1994472d/dbconnect/connectdb.go:161 +0x64
2020-01-06T18:46:25.827037+00:00 app[web.1]: github.com/amunnelly/gowebappdatabase/routing.ServeHome(0x8db260, 0xc00013a000, 0xc000124100)
2020-01-06T18:46:25.827039+00:00 app[web.1]: /tmp/build_b7c9c282f9c067c1b5b5cede1994472d/routing/routing.go:35 +0x1b5
2020-01-06T18:46:25.827041+00:00 app[web.1]: net/http.HandlerFunc.ServeHTTP(0x863ca0, 0x8db260, 0xc00013a000, 0xc000124100)
2020-01-06T18:46:25.827043+00:00 app[web.1]: /app/tmp/cache/go1.12.12/go/src/net/http/server.go:1995 +0x44
2020-01-06T18:46:25.827045+00:00 app[web.1]: net/http.(*ServeMux).ServeHTTP(0xba17c0, 0x8db260, 0xc00013a000, 0xc000124100)
2020-01-06T18:46:25.827047+00:00 app[web.1]: /app/tmp/cache/go1.12.12/go/src/net/http/server.go:2375 +0x1d6
2020-01-06T18:46:25.827049+00:00 app[web.1]: net/http.serverHandler.ServeHTTP(0xc000086c30, 0x8db260, 0xc00013a000, 0xc000124100)
2020-01-06T18:46:25.827051+00:00 app[web.1]: /app/tmp/cache/go1.12.12/go/src/net/http/server.go:2774 +0xa8
2020-01-06T18:46:25.827053+00:00 app[web.1]: net/http.(*conn).serve(0xc0001100a0, 0x8dbc20, 0xc000118180)
2020-01-06T18:46:25.827055+00:00 app[web.1]: /app/tmp/cache/go1.12.12/go/src/net/http/server.go:1878 +0x851
2020-01-06T18:46:25.827056+00:00 app[web.1]: created by net/http.(*Server).Serve
2020-01-06T18:46:25.827058+00:00 app[web.1]: /app/tmp/cache/go1.12.12/go/src/net/http/server.go:2884 +0x2f4
2020-01-06T18:46:25.828262+00:00 heroku[router]: at=error code=H13 desc="Connection closed without response" method=GET path="/" host=gowebappdatabase.herokuapp.com request_id=b57f171c-5a63-4f2b-b54c-444d7c46d871 fwd="176.61.86.66" dyno=web.1 connect=1ms service=6ms status=503 bytes=0 protocol=https
2020-01-06T18:46:26.697559+00:00 app[web.1]: 2020/01/06 18:46:26 http: panic serving 10.67.225.150:14843: dial tcp: lookup port=0: no such host
2020-01-06T18:46:26.697582+00:00 app[web.1]: goroutine 7 [running]:
2020-01-06T18:46:26.697585+00:00 app[web.1]: net/http.(*conn).serve.func1(0xc00008d180)
2020-01-06T18:46:26.697588+00:00 app[web.1]: /app/tmp/cache/go1.12.12/go/src/net/http/server.go:1769 +0x139
2020-01-06T18:46:26.697590+00:00 app[web.1]: panic(0x7e4280, 0xc00008a320)
2020-01-06T18:46:26.697592+00:00 app[web.1]: /app/tmp/cache/go1.12.12/go/src/runtime/panic.go:522 +0x1b5
2020-01-06T18:46:26.697595+00:00 app[web.1]: github.com/amunnelly/gowebappdatabase/dbconnect.runQuery(0xc0000946e0, 0x150, 0x0)
2020-01-06T18:46:26.697597+00:00 app[web.1]: /tmp/build_b7c9c282f9c067c1b5b5cede1994472d/dbconnect/connectdb.go:78 +0xff
2020-01-06T18:46:26.697599+00:00 app[web.1]: github.com/amunnelly/gowebappdatabase/dbconnect.PointsGdTableQuery(0xc0000946e0, 0x150, 0x0, 0x0, 0x0)
2020-01-06T18:46:26.697601+00:00 app[web.1]: /tmp/build_b7c9c282f9c067c1b5b5cede1994472d/dbconnect/connectdb.go:161 +0x64
2020-01-06T18:46:26.697604+00:00 app[web.1]: github.com/amunnelly/gowebappdatabase/routing.ServeHome(0x8db260, 0xc0001b2000, 0xc000128100)
2020-01-06T18:46:26.697606+00:00 app[web.1]: /tmp/build_b7c9c282f9c067c1b5b5cede1994472d/routing/routing.go:35 +0x1b5
2020-01-06T18:46:26.697608+00:00 app[web.1]: net/http.HandlerFunc.ServeHTTP(0x863ca0, 0x8db260, 0xc0001b2000, 0xc000128100)
2020-01-06T18:46:26.697611+00:00 app[web.1]: /app/tmp/cache/go1.12.12/go/src/net/http/server.go:1995 +0x44
2020-01-06T18:46:26.697614+00:00 app[web.1]: net/http.(*ServeMux).ServeHTTP(0xba17c0, 0x8db260, 0xc0001b2000, 0xc000128100)
2020-01-06T18:46:26.697616+00:00 app[web.1]: /app/tmp/cache/go1.12.12/go/src/net/http/server.go:2375 +0x1d6
2020-01-06T18:46:26.697618+00:00 app[web.1]: net/http.serverHandler.ServeHTTP(0xc000086c30, 0x8db260, 0xc0001b2000, 0xc000128100)
2020-01-06T18:46:26.697620+00:00 app[web.1]: /app/tmp/cache/go1.12.12/go/src/net/http/server.go:2774 +0xa8
2020-01-06T18:46:26.697622+00:00 app[web.1]: net/http.(*conn).serve(0xc00008d180, 0x8dbc20, 0xc0000206c0)
2020-01-06T18:46:26.697625+00:00 app[web.1]: /app/tmp/cache/go1.12.12/go/src/net/http/server.go:1878 +0x851
2020-01-06T18:46:26.697627+00:00 app[web.1]: created by net/http.(*Server).Serve
2020-01-06T18:46:26.697629+00:00 app[web.1]: /app/tmp/cache/go1.12.12/go/src/net/http/server.go:2884 +0x2f4
2020-01-06T18:46:26.697828+00:00 heroku[router]: at=error code=H13 desc="Connection closed without response" method=GET path="/favicon.ico" host=gowebappdatabase.herokuapp.com request_id=088bcdd0-e16f-40f9-a6a0-8d61f4bb5beb fwd="176.61.86.66" dyno=web.1 connect=5ms service=3ms status=503 bytes=0 protocol=https
我希望能够解决这个问题。一整年都让我头疼。
【问题讨论】:
-
您的处理程序恐慌(在
dbconnect.runQuery()中),因此它不会向响应中写入任何内容。您的应用似乎无法访问数据库。 -
对不起,icza,我现在才看到你的评论。是的,你完全正确。这是一个数据库身份验证问题。
标签: postgresql http go heroku