问题现象
某客户更换了跳板机,操作系统版本: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