http连接陷入close_wait状态

时间:2016-04-21 02:58:07

标签: go tcp

我使用gin构建一个简单的api服务器。现在,几分钟后服务器启动后,所有传入的请求都被卡住了。检查连接状态后,我收到如下消息:enter image description here

我已经尝试设置c.Request.Close = true或c.Header(" Connection"," close")或两者都有,但它无效。我想知道是否有人可以帮我解决这个问题。

UPDATE-1 启动服务器的方式

            runtime.GOMAXPROCS(runtime.NumCPU())
            //start serving
            r := gin.New()
            r.Use(gin.LoggerWithWriter(logFile))
            r.Use(gin.RecoveryWithWriter(logFile))
            r.Use(handler.SetResponseHeader())
            controller.Router.RegisterRouter(r, cfg)

            //r.Run(cfg.SvcHost)
            s := &http.Server{
                Addr:    cfg.SvcHost,
                Handler: r,
            }
            s.ListenAndServe()

UPDATE-2

暂时禁用全局gorm.DB实例并为每个请求创建新的数据库连接后,此问题不再发生。

1 个答案:

答案 0 :(得分:1)

TCP正在等待您关闭这些连接。可能你已经从他们那里读到了流的结尾而忽略了它。