首页 文章

TCP:地址已被使用异常 - 客户端端口可能的原因?没有港口的消耗

提问于
浏览
1

愚蠢的问题 . 我从连接到服务器的客户端获取 . 可悲的是,设置很复杂,使得调试变得复杂 - 而且我们的选项也用完了 .

环境:*客户端/服务器系统,两者都在同一台机器上运行 . 客户端实际上是在特定时间执行某些数据库操作的服务 . * Cnonection来自C#通过OleDb到EasySoft JDBC驱动程序到一个自定义编写的JDBC服务器,然后在C中托管逻辑 . 是的,compelx - 但第三方供应商决定通过JDBC接口公开其服务器的扩展机制 . 在这里可以做的不是很多;)

症状:在(红色)定期间隔,我们从JDBC驱动程序获取“已使用的地址:连接” . 它们似乎来自我们运营的一项特定服务 .

现在,我确实阅读了有关端口耗尽的所有内容 . 这就是为什么我们现在运行一个小工具,每分钟计算端口及其状态 . 上次发生这种情况时,我们使用了令人惊讶的370个端口,错误后计数上升到大约900 . 我们修改了注册表(它是一台Windows机器)以允许超过5000个客户端端口标准,但即便如此,我们还远远没有开始的那个限制 .

这就是我在这里问的原因 . Ayneone是一个理想的ELSE可能导致这个?

它是一台64位的Windows 2003 Server机器 . 我可以看到的另一件可能导致它的东西(但是这个功能被认为是禁用的)是安装在服务器上的Symantec Endpoint Protection - 并且能够作为防火墙运行,它可能会拦截网络流量 . 我不想过早地指向赛门铁克打开一堆蠕虫(如果指向赛门铁克可以这样看待) . 所以,任何人都知道其他原因可能是什么?

谢谢

2 回答

  • -1

    “已经在使用的地址”,又名WSAEADDRINUSE(10048),意味着当客户端套接字准备连接到服务器套接字时,它首先尝试将自身绑定到另一个套接字已在使用的特定本地IP /端口对,要么是活动的,要么已经关闭但仍处于FD_WAIT状态 . 这与可用的端口数无关 .

  • 1

    我喜欢10台具有相同配置的服务器,每天只有一台服务器显示此错误 . 使用小型测试程序,我只需在SQL Server侦听端口上 Build TCP连接即可重现错误 . 运行CurrPorts(http://www.nirsoft.net/utils/cports.html)显示仍然有足够的可用端口,范围1024-5000 .

    我没有想法,想知道你是否找到了解决方案,因为你发布了自己的问题 .

    编辑:我终于找到了解决方案:服务器上存在蠕虫(WORM_DOWNAD.A),并且在没有被注意的情况下耗尽了本地端口 .

相关问题