一次可以打开多less个TCP套接字?

我将开发一个tcp服务器应用程序。 我在“select服务器”一步。 我的tcp服务器将有2000 +客户端和一个套接字到每个客户端。

所以,我的问题是,根据操作系统创build套接字是否有限制?

哪个操作系统一次允许更多的套接字?

提前致谢,

是有限制的,但你可能永远不会接近他们( 连接是不一样的连接或接通连接,一个连接是兴奋的,已经建立,这个数字是显着高于其他国家@corsiKa给了你可以有一个很好的报价连接会话的数量。)

这里有一些有用的命令:

# Shows some general useful information, ulimit -a # if not, here are some other places to look # maximum files: cat /proc/sys/fs/file-max # maximum filedescriptors: cat /proc/sys/fs/file-nr # maximum backlog of unaccepted clients: cat /proc/sys/net/core/somaxconn # And number of threads to run at once: cat /proc/sys/kernel/threads-max 

什么限制了多少个开放的You->Them连接,基本上有多少个本地端口可供您使用并分配为您的池,您可以在以下位置找到这些信息:

 sysctl net.ipv4.ip_local_port_range 

在传入的端口上还有一个“buffert”,它限制了你可以连接到你的客户的数量,在这里找到这个信息:

 sysctl net.ipv4.tcp_max_syn_backlog sysctl net.core.netdev_max_backlog 

此外,在这里找到一个完整的说明: 增加在Linux中的最大数量的TCP / IP连接

一个2Gb的Windows服务器应该支持16000个 ,所以这是相当不错的,因为2Gb相当便宜:

在Windows NT,Windows 2000,Windows XP和Windows 2003 server上,套接字是从非分页内存池分配的,因此可以在系统范围内创建的实际套接字数取决于安装的物理内存量。 非分页内存池是物理内存的1/8,在Windows NT上最高可达128Mb,而在Windows 2000和更高版本的平台上最高可达256Mb。 Windows NT服务器的理论最大值是大约12,000个套接字,而Windows 2000和更高版本的是25,000个。 实际上,估计Windows server平台可以为每512Mb的物理内存分配大约4,000个套接字是安全的 。 对于Windows NT,这意味着对于具有1Gb或更多内存的系统,套接字的最大数量将是大约8,000个。 对于Windows 2000和更高版本,对于2Gb或更多内存的系统,套接字的最大数量约为16,000。

看起来免费的BSD可以有超过100万 ,那是在2年前:

在过去几个月中,我们一直在对服务器进行大量改进,以提高性能,正常运行时间和可扩展性。 今天,我们调整了一些旋钮,转移了一些交通,并在一台机器上实现了100万个建立的TCP会话(并且还有内存和CPU)。

$ netstat -an | grep -c EST

1016313

所以在10 ^ 5到10 ^ 7之间的地方,是的。