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

发布时间:2022-06-08 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Socket:由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

最近服务器的Socket代理软件经常报这个错误:

LOG:Error On : 2013-5-17 0:01:00 由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作。 在System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot,SocketAddress socketAddress) 在System.Net.Sockets.Socket.Bind(EndPoint localEP) 在AdKiller.SocketPool.CreateSocketWIThoutConnect(Uri hostUri, IPEndPointp)

英文版 叫:

An operation on a socket could not be performed because the systeMLacked sufficient buffer space or because a queue was full.

今天抽空,查了一下网络,基本上发生的问题的原因如下:

默认只有5000可用端口,每次绑定使用后,默认需要120秒后才能恢复使用。

所以,由于代理软件会大量请求转发,所以很频繁,以至于出现这种问题。

解决的方法很简单

1:修改默认可用端口数:

注册表下:HKLMSYSTEMcurrentControlSetServicesTcpipParameters

新增加一项:MaxUserPort

对应的值:6万个左右就OK了。

看着MaxUserPort这个词,我在怀疑是不是作者打错字,会不会是MaxUsePort,经过多数查找,还是发现前者的多的,所以估算应该是“最大用户端口”,而不是“最大使用端口”

2:修改间隔的恢复时间:

注册表下:HKLMSYSTEMCurrentControlSetServicesTcpipParameters

新增加一项:TcpTimedWaitDelay

对应的值:10s 左右。

特此记录。————————————————版权声明:本文为CSDN博主「你的美,让我痴迷」的原创文章,遵循CC 4.0 BY-sA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/weixin_45932157/article/details/113999801

脚本宝典总结

以上是脚本宝典为你收集整理的Socket:由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作全部内容,希望文章能够帮你解决Socket:由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。