Я пытаюсь развернуть приложение Golang в Heroku. Я получаю ошибку H13, и я не знаю, как ее исправить.
Приложение запрашивает базу данных и возвращает таблицу результатов. База данных маленькая, запрос маленький. Он работает локально на порту 8080, никаких проблем.
В документации H13 Error говорится, что
Эта ошибка выдается, когда процесс в вашем веб-dyno принимает соединение, но затем закрывает сокет, ничего не записывая к этому.
Один из примеров, когда это может произойти, - когда веб-сервер Unicorn настроен с тайм-аутом короче 30 с, и запрос не был обработан работником до истечения тайм-аута. В этом случае Unicorn закрывает соединение до записи каких-либо данных, что приводит к H13.
Насколько мне известно, я не использую веб-сервер Unicorn (хотя я нахожусь за пределами своей зоны комфорта в необходимости настройки серверов в первую очередь). Я запускаю приложение из пакета 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
Я бы хотел исправить это. Это ломало мне голову весь год.