最近在开发程序过程中,原本好好运行好的程序,突然出现以下错误:
Net SqlClient Data Provider thrown System.Data.SqlClient.SqlException在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: TCP 提供程序, error: 0 - 由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作。
错误很频繁,机器的CPU很高。
分析:
1、程序未进行改动。没有任何上线。
2、发现IIS链接数比之前增高。
分析是由于网站流量增大,增加IISweb园后,但是还是存在这样问题。
网上查询后,才知道,windows 2003对tcp的连接数做了限制,超多这个数目就会出现系统缓冲区空间不足或队列已满错误。
之后增加tcp链接数,修改注册表如下:
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" /v "MaxUserPort" /d "65534" /t REG_DWORD /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" /v "TcpTimedWaitDelay" /d "30" /t REG_DWORD /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" /v "TcpNumConnections" /d "65534" /t REG_DWORD /f