我有一个托管在AWS上的应用程序,该应用程序在Production上运行,并创建一个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后面。
已编辑的问题:
答案 0 :(得分:0)
设置服务器时,应添加适合您的应用程序的超时时间,例如
srv := &http.Server{
ReadTimeout: 5 * time.Second,
WriteTimeout: 20 * time.Second,
IdleTimeout: 180 * time.Second,
Handler: myMux,
}
通过这种方式,空闲连接应该被关闭。如果是上游负载平衡器对那么多连接发送运行状况检查,则解决方案将有所不同。