【问题标题】:How many TCP/IP socket connections can a system(computer) handle?一个系统(计算机)可以处理多少个 TCP/IP 套接字连接?
【发布时间】:2013-09-15 11:26:05
【问题描述】:

我一直在从事有关 TCP/IP 套接字连接和通过这些套接字传输消息的项目。我正在连接到具有特定 IP 地址的 UNIX 服务器并建立套接字连接。到目前为止,我可以管理来自 1 台主机的大约 16000 个连接(在这种情况下,这是我自己的电脑)。当我尝试从其他主机(Mac Osx 或 Windows PC)建立其他连接时,我达到了相同的最大连接数,16000。

我可以在服务器端拥有 65536 个连接,并且我确实保持了这一点。但只有在 4 台不同计算机中的每台都有 16000 个连接时。我想知道为什么我有这个以及如何仅从 1 个主机建立超过 16000 个连接。

【问题讨论】:

  • 您确定在服务器端限制为 65536 个连接吗?我意识到你说你有一个 Unix 服务器,但是 Windows 使用一个由本地地址、本地端口、远程地址、远程端口组成的元组来跟踪入站连接。所以你可以拥有远远超过 65536...
  • 实际上我将 ulimit 设置为 128000 即使我不需要它。但这不是问题。我想从 1 个主机建立超过 16000 个连接。

标签: sockets tcp


【解决方案1】:

在 Windows 系统上,TCP 堆栈受多个注册表参数的约束。它们晦涩难懂且文档记录不完善,并且随着更新的(Vista、Win7、Win8)版本发生了变化,它们在桌面操作系统和服务器操作系统风格之间也有所不同。

一些知识库和 MSDN 文章涵盖了该主题:

但这篇文章更能解决您的问题:Avoiding TCP/IP Port Exhaustion。尽管与 BizTalk 相关,但主题和解决方案是通用的:增加MaxUserPort 并减少TcpTimedWaitDelay(尽管careful 是后者)。您的系统最终支持的细节各不相同,因此您必须使用这些设置。确保您的测试机器是 64 位处理器、64 位操作系统,并且有足够的 RAM (>4Gb)。

对于 OS X,我希望其他人能提供详细信息。

【讨论】:

  • 通常您需要做的就是确保 MaxUserPort 处于最大值,并且您没有运行太多其他占用临时范围内端口的东西。我会非常谨慎地减少 TIME_WAIT 延迟,它的存在是有原因的,而且您经常最终会越来越低地追逐延迟;见serverframework.com/asynchronousevents/2011/01/…
猜你喜欢
  • 2010-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-06
相关资源
最近更新 更多