我们在专用服务器上经常遇到与networking有关的奇怪问题。 它在具有16 GB RAM和Intel 82575EBnetworking适配器的Xeon E5620上运行Windows Server 2012 R2 x64。
请注意,我们已经将HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters键值TcpTimedWaitDelay和MaxUserPort分别调整为30和65530。
在随机的时间点,我们的网站停止响应,原因是他们无法连接到本地数据库。 当这个问题开始发生的时间大概是2个星期的正常运行时间。 系统日志开始获取TCPIP警告4227和4231.It声明“从全局TCP端口空间分配临时端口号的请求失败,因为所有这些端口正在使用中”。
如果我跑
Get-Counter -Counter \TCPv4\*
要么
Get-Counter -Counter \TCPv6\*
要么
netstat -abn | find /c ":"
我总是得到500-1500个连接的合理值,甚至没有接近65K的限制。
此外,“本地主机”停止parsing为:: 1本地,恢复到127.0.0.1
只有强制重启机器才能解决问题。
它可能是一个networking适配器的问题?
更新1
它再次发生,似乎已经解决了,当我重新启动邮件服务器。 奇怪的是,所有的计数器都显示~500个连接,当前正在激活~500个,并且在尝试连接到与邮件服务器无关的数据库时仍然出现10055套接字错误。
更新2这是奇怪的,但邮件服务每天重新启动修复问题完全。
在WinSvr 2012R2 x64的TCP / IP端口池已经耗尽了近一个月的时间,服务器停止接收任何新的和TCP连接的情况下,我遇到了类似的问题。 所以我玩了registry值,这些对我来说是稳定的:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters] "TcpTimedWaitDelay"=dword:0000001e "MaxUserPort"=dword:0000fffe "TcpNumConnections"=dword:00fffffe "TcpMaxDataRetransmissions"=dword:00000005
结果和你一样。 我认为你应该考虑审核你的应用程序/脚本性能的行为。 如果一切正常,没有任何帮助,那么你可以尝试在你的Web应用服务器之前放置代理服务器,用Web服务器(IIS,Apache,…)创build2个节点,它们将共享相同的静态内容并访问相同的数据库时间(如果你的公司有足够的资源)。
也许这篇文章会以某种方式帮助你: http : //blogs.technet.com/b/tristank/archive/2008/03/11/maxuserport-what-it-is-what-it-does-when-it- S-important.aspx
你确定你没有泄漏数据库连接对象吗? 您必须closures打开的每个数据库连接(显式地使用try-finally)或使用{}块。 这是ASP不会直接告诉你的常见问题。
除Tcpip驱动程序设置之外,临时TCP端口范围在Windows Server中使用netsh命令( 源 )进行pipe理。
您可以使用以下命令查看dynamic端口范围:
netsh int ipv4 show dynamicport tcp netsh int ipv4 show dynamicport udp netsh int ipv6 show dynamicport tcp netsh int ipv6 show dynamicport udp 要更改端口范围,请使用以下命令:
netsh int <ipv4|ipv6> set dynamic <tcp|udp> start=number num=range 例如:
netsh int ipv4 set dynamicport tcp start=49152 num=16384
设置(开始= 49152 num = 16384 )也是Windows Server 2008之后的默认设置 。
如果在Windows Server 2016上使用chromewebdriver运行大量的Seleniumtesting,也会出现同样的问题。 这个PS脚本会自动configuration上面共享的设置@Myke。 添加了shutdown命令,因为TCP堆栈更改需要重新启动。
Get-Item 'HKLM:\System\CurrentControlSet\Services\Tcpip\Parameters' | New-ItemProperty -Name MaxUserPort -Value 65534 -Force | Out-Null Get-Item 'HKLM:\System\CurrentControlSet\Services\Tcpip\Parameters' | New-ItemProperty -Name TcpTimedWaitDelay -Value 30 -Force | Out-Null Get-Item 'HKLM:\System\CurrentControlSet\Services\Tcpip\Parameters' | New-ItemProperty -Name TcpNumConnections -Value 16777214 -Force | Out-Null Get-Item 'HKLM:\System\CurrentControlSet\Services\Tcpip\Parameters' | New-ItemProperty -Name TcpMaxDataRetransmissions -Value 5 -Force | Out-Null shutdown -r -t 0
这是我们在Webdriver.Quit()上收到的错误消息,告诉我们TCP地址正在使用中。
错误 :EADDRINUSE在ClientRequest处连接EADDRINUSE 127.0.0.1:12843。 (\ node_modules \selenium的webdriver \ HTTP \ index.js:238:15)
来自 :任务:WebDriver.quit()