Windows服务器【由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作】问题调查

今天测试反应了一个问题,说接口返回的速度变慢了,并且返回的数据也不对。然后就找到了我o(╥﹏╥)o。

第一个反应就是查日志,不查不要紧,一查吓一跳,整个服务器上所有的站点都报错了。异常信息如下:

System.AggregateException: One or more errors occurred. ---> System.Net.Sockets.SocketException: 由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作。

看着信息的提示应该是socket资源被耗尽了。第一反应就是重启系统,但是这只是应急的做法,后面一定还会出现,一定是程序哪里不对了。

首先,通过命令查看一下端口的占用情况

 netstat -ano 

果然有大量的Tcp连接处在了 FIN_WAIT_2 的状态,并且都是访问同一个地址,这个6379端口是Redis服务常用的端口(先怀疑是redis服务),

现在的问题就是定位是哪个进程了,根据提示 Pid=13220,使用命令(或者打开【任务管理器】)

tasklist 

我遇到的问题是 这个PID根本就不存在,这可怎么整,这个进程可能早就被回收了。突然间我想到是不是事件查看器能有些线索?

我打开的【事件查看器】,找到了【系统】,右键进行查询,果然找到了问题症结所在。

我打开这个站点的配置文件,看到了那个redis的配置,是个域名!  ping一下这个域名

果然各种连不上,IP也对上了! 我们公司的策略连不上是正常的,这个配置不应该使用正式版的配置。

原文地址:https://www.cnblogs.com/dcz2015/p/10214791.html