gpt4 book ai didi

go - Go Transport 中的 keep-alive TTL 从不关闭连接

转载 作者:IT王子 更新时间:2023-10-29 00:47:49 25 4
gpt4 key购买 nike

我在 AWS 上托管了一个应用程序,该应用程序在生产环境中运行,创建了一个 http 服务器,如以下示例代码中所述。 go 库中默认超时为 180 秒。因此,理想情况下,未使用的连接应在 180 秒后关闭。

myMux := http.NewServeMux()
myMux.Handle("/SOME_PATH", appHandler{myHandler})
err = http.ListenAndServe(viper.GetString("handler.port"), myMux)

问题是当应用程序的流量增加时,连接数也会增加。但是当流量下降时,连接数保持不变。

我正在使用 go version go1.10 linux/amd64 并且此应用程序支持 Amazon ALB。

编辑后的问题:

如您所见,当应用程序落后于 ALB 时,连接减少的速度非常慢。那么,可能是什么问题 enter image description here

最佳答案

例如,当您设置服务器时,您应该添加适合您的应用程序的超时

srv := &http.Server{
ReadTimeout: 5 * time.Second,
WriteTimeout: 20 * time.Second,
IdleTimeout: 180 * time.Second,
Handler: myMux,
}

有了这个,空闲连接应该被关闭。如果它是一个上游负载均衡器,对那么多连接发送健康检查,则解决方案会有所不同。

关于go - Go Transport 中的 keep-alive TTL 从不关闭连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54330107/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com