登录
首页 >  Golang >  Go问答

http2:服务器发送GOAWAY并关闭连接;最后流 ID=1999

来源:stackoverflow

时间:2024-04-19 13:54:34 139浏览 收藏

珍惜时间,勤奋学习!今天给大家带来《http2:服务器发送GOAWAY并关闭连接;最后流 ID=1999》,正文内容主要涉及到等等,如果你正在学习Golang,或者是对Golang有疑问,欢迎大家关注我!后面我会持续更新相关内容的,希望都能帮到正在学习的大家!

问题内容

我有for循环,在其中调用从osrm服务器获取响应的函数,一段时间后ioutil.readall(resp.body)返回打印http2的错误:服务器发送goaway并关闭连接; laststreamid=1999,errcode=no_error,debug=""

func RequestGET(req string) []byte {

    reqst, err := http.NewRequest("GET", req, nil)
    client := &http.Client{}
    resp, err := client.Do(reqst)
    if err != nil {
        panic(err)
    }
    resp_data, err := ioutil.ReadAll(resp.Body)
    resp.Body.Close()
    if err != nil {
        fmt.Println(err)
    }
    return resp_data
}

resp.body.close()不是关闭连接吗?我希望每次都能得到一个新的。


解决方案


服务器由于某种原因正在关闭连接;后端关闭、超时等。除了重试之外,您无能为力,就像您遇到任何其他连接错误一样。相关问题 (https://golang.org/issue/18639) 中有一些关于自动重试的讨论,但通常看起来客户端正在按预期工作。

Response.Body.Close不会关闭连接,否则就会违背http1.1和http2使用持久连接的目的。读取并关闭响应正文是允许 http 客户端重用连接的方式。

我遇到的问题与发送超过 50k 标头的 GET 请求有关。默认情况下,nginx 的限制为 4k。因此,如果您的服务器由于请求标头而断开连接,您可以收到此消息。

今天关于《http2:服务器发送GOAWAY并关闭连接;最后流 ID=1999》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>