go的http服务报错"accept4: too many open files"

        执行命令"netstat -ano |grep 8300"后发现有不少"tcp6     210      0 127.0.0.1:8300          127.0.0.1:14677         CLOSE_WAIT  off (0.00/0/0)",服务器

而后进入到服务的log目录下tail后发现一直打印"2018/05/25 14:57:49 http: Accept error: accept tcp [::]:8300: accept4: too many open files; retrying in 1s"。tcp

关于CLOSE_WAIT搜到文章<一次服务端大量CLOSE_WAIT问题的解决>,详细描述了问题产生的缘由,主要就是服务端响应客户端请求所打开的资源没有及时释放。post

而后就关键字"accept4: too many open files; retrying in 1s"及"http: Accept error: accept tcp"搜索到文章<Go net/http 超时指导>、<go语言实现服务器接收http请求以及出现泄漏时的解决方案>,spa

其中后一篇文章指出了一种忘记关闭致使的资源泄露,结合前一篇文章给http服务设置超时,后面就不会出现大量CLOSE_WAIT了,文章<go语言 Accept error: accept tcp [::]:5551: too many open files;>资源

指出"在一个for循环以内,若是是直接http.post那么,这个http.post所使用的资源尚未释放,下一次的http.post请求已经开始,形成资源没法快速释放,最终抛出异常",可是暂时尚未看到for循环

这个statChannel有什么泄露的地方。file

相关文章
相关标签/搜索