C# 模拟http请求出现 由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作[windows服务器]

系统里面用到C#模拟Http请求,上线到服务器后,发现日志中大量出现“由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作” 或“通常每个套接字地址(协议/网络地址/端口)只允许使用一次”

运行 netstat -ano 发现有大量的Tcp链接,怀疑可能是服务器各种请求太多了导致的

服务器是windows server 2019。

通过查询资料得知,windows server 2019 默认的启动端口是: 49152 ,端口数是:16384,具体验证是可以在cmd命令窗口输入“netsh int ipv4 show dynamicport tcp” ,能查询出来,截图如下:

 

相当于服务器最多只能启动 16384 个端口,所以可能是这里不够。

然后cmd命令运行:

 

 netsh int ipv4 set dynamicport tcp start=29152 num=36384

这句话,将启动端口调成了 29152 ,数量 36384 ,运行后后重启服务器,再次运行“netsh int ipv4 show dynamicport tcp”

 

这样子就把端口数调成了 一共有  36384个了,重启后,应用程序日志再也没出现过那个错误了

记录一下过程,以便大家遇到相同问题的排查,也给自己记录一下后续方便自己修改其他服务器的。

posted @ 2024-06-03 11:34  LoveCoder  阅读(187)  评论(0编辑  收藏  举报