• SQL Server 系统缓冲区空间不足或队列已满(错误:10055)


    最近数据库连接总隔段时间出现provider: TCP 提供程序, error: 0 - 由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作。 的错误。但这并不是SQL Server服务本身导致了此问题,实际上是来自 Windows系统,由机器的内存或TCP端口问题导致。我这里是由于连接过多,导致端口耗尽(根据操作系统的报错来排查)。

    已经知道问题根本原因之后,那么解决问题就变得简单了。
    Windows 2008 以后,微软遵从国际标准,动态端口的数量调整为16384个 (从49152起始,到65536结束),如果服务器对外有大量连接,而TCP默认的Time Wait Delay时间为2分钟这可能导致端口耗尽。

    解决方法如下:
    以管理员身份打开CMD,运行如下命令:

    netsh interface ipv4 show tcpstats
    netsh int ipv4 show dynamicport tcp

    查看一下,是否端口耗尽,目前端口数量是多少,如果确认端口耗尽就需要增大端口数量来解决。

    2、 增大动态端口数量

    netsh int ipv4 set dynamicport tcp start=1025 num=60000

    其中1025是起始端口号,num为数量,上述命令意思为从1025开始的60000个端口,到61025结束。

    注:该步骤无需重启机器, 立即生效

    3、 降低Time Wait时间,最低为30秒
    打开注册表,定位到 HKLM/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters
    新增键值 TcpTimedWaitDelay,类型REG_DWORD , 设置为十进制30
    注:修改后重启生效

    以上是对ipv4下的tcp协议操作,其他协议命令如下:

    netsh int ipv4 show dynamicport tcp
    netsh int ipv4 show dynamicport udp
    netsh int ipv6 show dynamicport tcp
    netsh int ipv6 show dynamicport udp

     

  • 相关阅读:
    【转】Lesktop 1.0 ——开源JS控件库,WebIM和网盘
    个人开公司的流程,以后用得着(转)
    C#中的弱引用
    同步异步的知识补充
    SynchronizationContext
    泛型弱引用(不继承 System.WeakReference)
    【转】亂數產生器:Random 與 RNGCryptoServiceProvider
    Oracle trunc()函数的用法
    [转]C# WinForm自定义控件整理
    自定义控件小结进阶篇(转)
  • 原文地址:https://www.cnblogs.com/VicLiu/p/15188789.html
Copyright © 2020-2023  润新知