zoukankan      html  css  js  c++  java
  • 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

     

  • 相关阅读:
    .net注册iis
    hdu 1081To The Max
    hdu 1312Red and Black
    hdu 1016Prime Ring Problem
    hdu 1159Common Subsequence
    hdu 1372Knight Moves
    hdu 1686Oulipo
    hdu 1241Oil Deposits
    hdu 1171Big Event in HDU
    hdu 4006The kth great number
  • 原文地址:https://www.cnblogs.com/VicLiu/p/15188789.html
Copyright © 2011-2022 走看看