环境: *客户端/服务器系统,两者都在同一台机器上运行。客户端实际上是在特定时间执行某些数据库操作的服务。 * Cnonection来自C#通过OleDb到EasySoft JDBC驱动程序到一个自定义编写的JDBC服务器,然后在C ++中托管逻辑。是的,compelx - 但第三方供应商决定通过JDBC接口公开其服务器的扩展机制。这里不能做很多事情;)
症状: 在(ir)定期间隔,我们从JDBC驱动程序获得“已在使用的地址:连接”。它们似乎来自我们运营的一项特殊服务。
现在,我确实阅读了有关端口耗尽的所有内容。这就是为什么我们现在运行一个小工具,每分钟计算端口及其状态。上次发生这种情况时,我们使用了令人惊讶的370个端口,错误后计数上升到大约900。我们修改了注册表(它是一台Windows机器),允许超过5000个客户端端口标准,但即便如此,我们还远远没有开始时的限制。
这就是我在这里问的原因。 Ayneone是ELSE可能导致这个问题的吗?
这是一台64位的Windows 2003 Server机器。我可以看到的另一件可能导致它的东西(但是这个功能被认为是禁用的)是安装在服务器上的Symantec Endpoint Protection - 并且能够作为防火墙运行,它可能会拦截网络流量。我不想过早地指向赛门铁克打开一堆蠕虫(如果指向赛门铁克可以这样看待)。所以,任何人都知道其他原因可能是什么?
由于
答案 0 :(得分:1)
“已经在使用的地址”,又名WSAEADDRINUSE(10048),意味着当客户端套接字准备连接到服务器套接字时,它首先尝试将自身绑定到已经使用的特定本地IP /端口对。另一个套接字,可以是活动的套接字,也可以是已关闭但仍处于FD_WAIT状态的套接字。这与可用的端口数无关。
答案 1 :(得分:-1)
我在连接到SQL Server 7.0的.Net应用程序的Windows 2000 Server上遇到了同样的问题。有10个服务器具有相同的配置,只有一个服务器每天多次显示此错误。使用小型测试程序,我只需在SQL Server侦听端口上建立TCP连接即可重现错误。运行CurrPorts(http://www.nirsoft.net/utils/cports.html)显示仍然有足够的可用端口,范围1024-5000。
我没有想法,想知道自从您发布问题以来是否找到了解决方案。
编辑:我终于找到了解决方案:服务器上存在一个蠕虫(WORM_DOWNAD.A),并且在没有被注意的情况下耗尽了本地端口。