1、问题
conn, err := net.Dial(“tcp”, ‘127.0.0.1:50001’)

执行此语句报错详细报错信息
dial tcp 127.0.0.1:50001: An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full.

此报错的原因一般是系统端口已用尽,无法再建立新的Socket连接

2、分析
命令行查看端口的使用情况,查看分析那个程序存在假死的端口占用。

netstat -ano >D:\1.txt
查看1.txt
活动连接协议  本地地址          外部地址        状态           PIDTCP    192.168.2.19:60005     192.168.2.18:20742  CLOSE_WAIT      5128TCP    192.168.2.19:60005     192.168.2.18:29758  CLOSE_WAIT      5128TCP    192.168.2.19:60005     192.168.2.18:29759  CLOSE_WAIT      5128TCP    192.168.2.19:60005     192.168.2.18:29760  CLOSE_WAIT      5128

一般情况下可能存在大量CLOSE_WAIT 或者TIME_WAIT 导致的

详细处理方法详见 【服务器 TIME_WAIT和CLOSE_WAIT】 http://blog.csdn.net/xia_xing/article/details/53352486

3、查看结果发现 存在很多CLOSE_WAIT状态的SOKET

服务端代码如下:

func handleConn(c net.Conn) {//Mark1for {rw := bufio.NewReader(c)Receivebag := make([]byte, 4*1024) //数据包接收区k, err := rw.Read(Receivebag)if k == 0 || err != nil {return}v, ok := buffermap[c] //判断缓冲区map中存不存在此连接if ok {               //存在v = append(v, Receivebag[0:k]...)buffermap[c] = v} else {buffermap[c] = Receivebag[0:k] //这是此连接的第一个数据包}Receivebag = nilhandleStickpackage(c) //处理粘包解包}
}

正常建立连接不会存在问题,若是大量的连接频繁建立重建,连接可能存在无法正常关闭的情况,从而导致大量的CLOSE_WAIT连接,占用无法释放导致无法创建新的连接。

处理方法:
在//Mark1处增加socket的close,问题解决。

func handleConn(c net.Conn) {defer c.Close()  //关闭连接//Mark1for {rw := bufio.NewReader(c)Receivebag := make([]byte, 4*1024) //数据包接收区k, err := rw.Read(Receivebag)if k == 0 || err != nil {return}v, ok := buffermap[c] //判断缓冲区map中存不存在此连接if ok {               //存在v = append(v, Receivebag[0:k]...)buffermap[c] = v} else {buffermap[c] = Receivebag[0:k] //这是此连接的第一个数据包}Receivebag = nilhandleStickpackage(c) //处理粘包解包}
}

golang:An operation on a socket could not be performed because the system lacked sufficient buffer s相关推荐

  1. bind: An operation on a socket could not be performed because the system lacked sufficient buffer sp

    如题所示错误并不一定是代码出问题了 最近在用golang抓取bitcoin块的数据,程序编译后运行良好. 运行一段时间后报错bind: An operation on a socket could n ...

  2. An operation on a socket could not be performed because the system lacked sufficient buffer space or

    dkron (dkron 是一个定时任务执行系统,可以将所有的定时任务写成接口形式,用这个定时任务系统统一管理)定时任务所有的定时任务都不执行了,启动不了,查看日志报错: An operation o ...

  3. Golang使用协程通过Socket实现客户端向服务端发送数据,服务端接收数据

    一.服务端代码: package mainimport("fmt""net" )func process(conn net.Conn) {//延迟关闭目前连接d ...

  4. Socket:由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作

    最近服务器的Socket代理软件经常报这个错误: log:Error On : 2013-5-17 0:01:00 由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作. 在 System.Net ...

  5. Linux 网络编程socket错误分析

    socket错误码: EINTR: 4 阻塞的操作被取消阻塞的调用打断.如设置了发送接收超时,就会遇到这种错误. 只能针对阻塞模式的socket.读,写阻塞的socket时,-1返回,错误号为INTR ...

  6. linux socket错误提示errno分析

    参考链接:http://aigo.iteye.com/blog/1911134 参考链接:https://baike.baidu.com/item/errno/11040395?fr=aladdin ...

  7. Windows Sockets 错误码及出错原因

    From: http://blog.csdn.net/mjay1234/article/details/7684316 Windows Sockets在头文件winsock.h中定义了所有的错误码,它 ...

  8. java.net.BindException: Address already in use解决方法

    在网络编程中,特别是在短时间内new的网络连接太多,经常出现java.net.BindException: Address already in use: JVM_Bind的异常,网络有很多介绍此异常 ...

  9. 程序网络访问出错:lacked sufficient buffer space

    为什么80%的码农都做不了架构师?>>>    之前在用Go语言做一个批量程序时出现在下错误 dial tcp 127.0.0.1:80: An operation on a soc ...

最新文章

  1. Cobbler部署指南之Cobbler安装操作系统篇
  2. linuxquot;/quot;分区名称,linux分区,磁盘系统的管理,文件系统制作
  3. 月薪5K的运维小白如何成为月薪5W的高级架构师?
  4. MySQL探秘(六):InnoDB一致性非锁定读(隔离性)
  5. 第2课 桐桐的运输方案《聪明人的游戏 信息学探秘.提高篇》
  6. MyBatis复习(九):MyBatis整合C3P0连接池
  7. Globe宣布将在Balancer拍卖14,000,000枚GDT代币
  8. Java定时器每小时执行一次
  9. 网上购物与开店赢家随身查
  10. python工具包: pandas
  11. ant design-Table中的分页实现(包括点击跳页,输入跳页,以及指定每页项目数)
  12. python长度单位换算表_长度单位换算表大全
  13. 2019当今互联网赚钱的六大方式,赠送给迷茫的网赚新手
  14. 全天星图应用软件介绍(四季星座VB6源码)
  15. prgrmz的作品集
  16. 最新Win10离线安装.NET Framework 3.5的方法(不需要离线包,只需原版系统安装包,亲测完美快捷有效)
  17. druid.io index_realtime任务的hand off:仍然是源码+log说清楚
  18. Tensorflow2.3用SaveModel保存训练模型.pb等文件+opencvino转IR文件
  19. 传递给窗口过程函数的lParam参数指针
  20. 拥抱新技术?你需要考虑的方面

热门文章

  1. 空间点过程与随机测度(二):测度的故事
  2. speedoffice如何在Word文档中输入美元符号
  3. Mac 锦囊 —— 误删除admin组之后
  4. 《Python Excel 教程》
  5. vac服务器未响应,csgo国服游戏停止工作、未响应的解决方法
  6. 《名侦探柯南》中的“IoT恐袭”
  7. 如何在 Matplotlib 中绘制垂直线
  8. 25.有5个人做在一起, 问第五个人多少岁? 他说比第四个人大2岁. 问第四个人岁数, 他说比第是三个人大2岁. 问第三个人, 又说比第二人大两岁. 问第二个人, 说比第一个人大两岁. 最后问第一个人
  9. redis IO模型的演进
  10. 云计算学习笔记1——并行计算