zoukankan      html  css  js  c++  java
  • 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"。

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

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

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

    指出"在一个for循环之内,如果是直接http.post那么,这个http.post所使用的资源还没有释放,下一次的http.post请求已经开始,造成资源无法快速释放,最终抛出异常",但是暂时还没有看到

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

  • 相关阅读:
    论线段树:二
    BST 二叉搜索树
    论线段树:一
    [luoguP3627][APIO2009]抢掠计划
    二分图匹配(匈牙利算法)
    SPFA 全面讲解
    markdown的常用高级操作。
    UVA11235 Frequent values
    P2279 [HNOI2003]消防局的设立
    P2216 [HAOI2007]理想的正方形
  • 原文地址:https://www.cnblogs.com/wongdu2014/p/9089068.html
Copyright © 2011-2022 走看看