【友云音】【问题排查记录-4】java.io.IOException: No buffer space available (maximum connections reached?)

问题现象

某客户更换了跳板机,操作系统版本:Windows 7 v6.1 amd64

在监控产品发现,该客户的指标数据上传异常。登录服务器发现,java的进程在,但实际上已经不在进行工作了。

日志中有大量报错信息:

{"agentid":"sCQpJrMNfJ2463590576_373780f70c8bba3ad29f1557422ab5f6","hostmd5":"44adc6388af40ab49e2fddaffb58f736","agentver":"3.0.0_20181117_release","confver":"2017-11-28_15_03_02","agentcmdver":"1","receiveupdate":false}
2019-05-27 15:25:32 HeartBeatSubject - [ WARN ]  null can't be transformed from json : {}
java.io.IOException: No buffer space available (maximum connections reached?): connect
	at ycm.agent.util.send.HttpClientUtil.sendPost(HttpClientUtil.java:186)
	at ycm.agent.util.send.HttpClientUtil.send(HttpClientUtil.java:110)
	at ycm.agent.util.send.SinkTool.sendPost(SinkTool.java:39)
	at ycm.agent.heartbeat.HeartBeatSubject.send(HeartBeatSubject.java:90)
	at ycm.agent.runnable.scheduled.HeartBeatTask.doAction(HeartBeatTask.java:23)
	at ycm.agent.runnable.scheduled.AbstractScheduledTask.run(AbstractScheduledTask.java:48)
	at ycm.agent.runnable.scheduled.ScheduledServiceSafeWrappers$1.run(ScheduledServiceSafeWrappers.java:36)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
	at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317)
	at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:180)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:204)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
	at java.lang.Thread.run(Thread.java:662)
2019-05-27 15:25:35 ForwardToYonyouCloudHandler - [ DEBUG ]  Sending data , method : hbcheck data : {"agentid":"sCQpJrMNfJ2463590576_663d803fa76fca3be309f5d6af03a881","hostmd5":"25c71792e4058ba2a13f782d4ef186a0","agentver":"3.0.0_20181117_release","confver":"2017-11-28_15_03_02","agentcmdver":"1","receiveupdate":false}

问题分析

微软原文
Symptoms


  • Consider the following scenario:

  • You have a multiprocessor computer that is running Windows Server 2008 R2 or Windows 7.
  • You run an application that creates loopback sockets on the computer.
  • In this scenario, you receive the following error message:

    WSAENOBUFS (10055) 
    An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full.


    Specifically, the application may be unable to create new sockets and a "no buffer space available" or "insufficient buffer space" exception occurs on the computer. Additionally, when this issue occurs users cannot remotely connect to the computer until it is restarted.

    Cause


    This issue occurs because of a race condition in the Ancillary Function Driver for WinSock (Afd.sys) that causes sockets to be leaked. With time, the issue that is described in the "Symptoms" section occurs if all available socket resources are exhausted.

出现此问题是由于WinSock(Afd.sys)的辅助功能驱动程序中的竞争条件导致套接字泄漏。随着时间的推移,如果所有可用的套接字资源都耗尽,则会出现“症状”部分中描述的问题。

问题解决

之前官网提供了补丁下载,但后续关闭了服务。

解决办法原文

更新操作系统版本到Windows 10

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值