【问题标题】:TCP: Address already in use exception - possible causes for client port? NO PORT EXHAUSTIONTCP:地址已在使用异常 - 客户端端口的可能原因?无端口耗尽
【发布时间】:2011-01-24 21:03:46
【问题描述】:

愚蠢的问题。我从连接到服务器的客户端获取那些。可悲的是,设置很复杂,调试也很复杂——而且我们没有办法了。

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

症状: 在(ir)定期间隔中,我们会从 JDBC 驱动程序中得到一个“地址已在使用中:连接”。它们似乎来自我们运行的一项特定服务。

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

这就是我在这里问的原因。不知道还有什么 ELSE 会导致这种情况?

这是一台 Windows 2003 Server 机器,64 位。我能看到的唯一可能导致它(但此功能被禁用)的是安装在服务器上的 Symantec Endpoint Protection - 并且能够充当防火墙,它可能会拦截网络流量。我不想通过过早地指向赛门铁克来打开一罐蠕虫(如果指向赛门铁克可以被视为这样的话)。那么,有人知道还有什么原因吗?

谢谢

【问题讨论】:

    标签: windows tcp port


    【解决方案1】:

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

    【讨论】:

    • ... 这是客户应该很少做的事情。没有优点和几个缺点,包括这一点。
    • 这是不对的。客户端工作正常并使用随机端口 - 这可以看到(除非我们在这里遇到一个每周一次的愚蠢错误)。我们的测试环境中的负载测试在 20 倍的负载下工作正常。该错误还与端口耗尽有关。检查例如socketlabs.com/support/…forums.parasoft.com/index.php?showtopic=435 这是我们不会遇到的每个我们自己的日志程序每分钟转储所有套接字状态的情况。
    【解决方案2】:

    我在带有连接到 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),并在没有引起注意的情况下耗尽了本地端口。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-23
      • 2011-01-08
      • 2014-12-29
      • 2011-01-30
      • 2010-09-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多