首页 > 系统相关 >Windows 下单机最大TCP连接数

Windows 下单机最大TCP连接数

时间:2022-09-04 11:25:14浏览次数:98  
标签:最大 Windows 端口 tcp TCP 连接数 连接

Windows 下单机最大TCP连接数_libaineu2004的博客-CSDN博客_windows服务器最大的tcp连接数  https://blog.csdn.net/libaineu2004/article/details/38983913

在做Socket 编程时,我们经常会要问,单机最多可以建立多少个 TCP 连接,本文将介绍如何调整系统参数来调整单机的最大TCP连接数。

Windows 下单机的TCP连接数有多个参数共同决定,下面一一介绍:

最大TCP连接数

[HKEY_LOCAL_MACHINE \System \CurrentControlSet \Services \Tcpip \Parameters]
TcpNumConnections = 0x00fffffe (Default = 16,777,214)

 

以上注册表信息配置单机的最大允许的TCP连接数,默认为 16M。这个数值看似很大,这个并不是限制最大连接数的唯一条件,还有其他条件会限制到TCP 连接的最大连接数。

最大动态端口数

TCP客户端和服务器连接时,客户端必须分配一个动态端口,默认情况下这个动态端口的分配范围为 1024-5000 ,也就是说默认情况下,客户端最多可以同时发起3977 个Socket 连接。我们可以修改如下注册表来调整这个动态端口的范围

[HKEY_LOCAL_MACHINE \System \CurrentControlSet \Services \Tcpip \Parameters]
MaxUserPort = 5000 (Default = 5000, Max = 65534)

 

最大TCB 数量

系统为每个TCP 连接分配一个TCP 控制块(TCP control block or TCB),这个控制块用于缓存TCP连接的一些参数,每个TCB需要分配 0.5 KB的pagepool 和 0.5KB 的Non-pagepool,也就说,每个TCP连接会占用 1KB 的系统内存。

系统的最大TCB数量由如下注册表设置决定

[HKEY_LOCAL_MACHINE \System \CurrentControlSet \Services \Tcpip \Parameters]
MaxFreeTcbs = 2000 (Default = RAM dependent, but usual Pro = 1000, Srv=2000)

非Server版本,MaxFreeTcbs 的默认值为1000 (64M 以上物理内存)

Server 版本,这个的默认值为 2000。

也就是说,默认情况下,Server 版本最多同时可以建立并保持2000个TCP 连接。

最大TCB Hash table 数量

TCB 是通过Hash table 来管理的,下面注册表设置决定了这个Hash table 的大小

HKEY_LOCAL_MACHINE \System \CurrentControlSet \services \Tcpip \Parameters]
MaxHashTableSize = 512 (Default = 512, Range = 64-65536)

这个值指明分配 pagepool 内存的数量,也就是说,如果MaxFreeTcbs = 1000 , 则 pagepool 的内存数量为 500KB

那么 MaxHashTableSize 应大于 500 才行。这个数量越大,则Hash table 的冗余度就越高,每次分配和查找 TCP  连接用时就越少。这个值必须是2的幂,且最大为65536.

 

IBM WebSphere Voice Server 在windows server 2003 下的典型配置

这是IBM WebSphere Voice Server 的典型配置,大家可以做个参考。原文参见

IBM Web Sphere Voice Server 配置

 

  • MaxUserPort = 65534 (Decimal)
  • MaxHashTableSize = 65536 (Decimal)
  • MaxFreeTcbs = 16000 (Decimal)

这里我们可以看到 MaxHashTableSize 被配置为比MaxFreeTcbs 大4倍,这样可以大大增加TCP建立的速度。


 

单机最大tcp连接数

网络编程

在tcp应用中,server事先在某个固定端口监听,client主动发起连接,经过三路握手后建立tcp连接。那么对单机,其最大并发tcp连接数是多少?

如何标识一个TCP连接

在确定最大连接数之前,先来看看系统如何标识一个tcp连接。系统用一个4四元组来唯一标识一个TCP连接:{local ip, local port,remote ip,remote port}。

client最大tcp连接数

client每次发起tcp连接请求时,除非绑定端口,通常会让系统选取一个空闲的本地端口(local port),该端口是独占的,不能和其他tcp连接共享。tcp端口的数据类型是unsigned short,因此本地端口个数最大只有65536,端口0有特殊含义,不能使用,这样可用端口最多只有65535,所以在全部作为client端的情况下,最大tcp连接数为65535,这些连接可以连到不同的server ip。

server最大tcp连接数

server通常固定在某个本地端口上监听,等待client的连接请求。不考虑地址重用(unix的SO_REUSEADDR选项)的情况下,即使server端有多个ip,本地监听端口也是独占的,因此server端tcp连接4元组中只有remote ip(也就是client ip)和remote port(客户端port)是可变的,因此最大tcp连接为客户端ip数×客户端port数,对IPV4,不考虑ip地址分类等因素,最大tcp连接数约为2的32次方(ip数)×2的16次方(port数),也就是server端单机最大tcp连接数约为2的48次方。

实际的tcp连接数

上面给出的是理论上的单机最大连接数,在实际环境中,受到机器资源、操作系统等的限制,特别是sever端,其最大并发tcp连接数远不能达到理论上限。在unix/linux下限制连接数的主要因素是内存和允许的文件描述符个数(每个tcp连接都要占用一定内存,每个socket就是一个文件描述符),另外1024以下的端口通常为保留端口。在默认2.6内核配置下,经过试验,每个socket占用内存在15~20k之间。

影响一个socket占用内存的参数包括:

rmem_max

wmem_max

tcp_rmem

tcp_wmem

tcp_mem

grep skbuff /proc/slabinfo

对server端,通过增加内存、修改最大文件描述符个数等参数,单机最大并发TCP连接数超过10万 是没问题的,国外 Urban Airship 公司在产品环境中已做到 50 万并发 。在实际应用中,对大规模网络应用,还需要考虑C10K 问题。

原文:

http://wanshi.iteye.com/blog/1256282

http://www.cnblogs.com/Solstice/archive/2011/07/01/2095411.html

http://unix.stackexchange.com/questions/30509/what-is-the-formula-to-determine-how-much-memory-a-socket-consumes-under-linux

http://serverfault.com/questions/10852/what-limits-the-maximum-number-of-connections-on-a-linux-server

http://soft.chinabyte.com/os/285/12349285.shtml

标签:最大,Windows,端口,tcp,TCP,连接数,连接
From: https://www.cnblogs.com/jmbt/p/16654669.html

相关文章

  • 在cmd运行窗口中输入DOS命令netstat,即可查看电脑的tcp连接。
    如何查看tcp连接_百度知道 https://zhidao.baidu.com/question/202977646.html在cmd运行窗口中输入DOS命令netstat,即可查看电脑的tcp连接。具体操作请参照以下步骤。1......
  • Windows11中windowsPowerShell运行hexo命令报错
    修改设置Windows11安装后,系统自带的终端输入命令,git和node都可以使用,hexo不可以,提示:hexo:无法加载文件C:\Users\username\AppData\Roaming\npm\hexo.ps1`,因为在此系......
  • Windows系统重装-U盘
    在操作系统重装之前,请确保重要资料已经备份U盘或者除系统盘外的磁盘,电脑有价数据无价!系统镜像下载Windows官网Windows10下载https://www.microsoft.com/zhcn/softwar......
  • win11专业版自带的好用的免费工具——windows沙盒
    在win11专业版中有一些好用又免费的工具,下面将介绍其中一款专门创建临时虚拟机以供测试各种软件的工具:Windows沙盒。 如果以前没有使用过该功能,它是默认关闭的,要......
  • 关于windows11 家庭版 无法关闭内核DMA和基于虚拟化安全的问题(AR40报错)
    系统版本:windows11家庭版,出厂自带的windows11家庭版(预装)CPU是inter的11代我忘记具体型号了(另一台也是inter12代的I7出现过)问题概述:在关闭了hyper-v后和手动关闭了内核......
  • 提升linux下tcp服务器并发连接数限制
    提升linux下tcp服务器并发连接数限制-星辰大海ゞ-博客园 https://www.cnblogs.com/wjoyxt/p/6155672.html1、修改用户进程可打开文件数限制   在Linux平台上,无论......
  • Windows/Ubuntu 双系统完美教程
    观前提示此处假定你已经安装好Windows,并且能够看懂英语。下载Ubuntu这里不同于一般推荐于英文官网下载,此处建议在中文官网下载。这样可以利用Ubuntu在国内架设的镜像,也......
  • OSI参考模型与TCP\IP协议
    1.分层思想1.1层次划分的必要性:很多不同的厂家生产各种型号的计算机,它们运行完全不同的操作系统,但TCP/IP协议族允许它们互相进行通信。这一点很让人感到吃惊,因为它......
  • Java 使用flink读写kafka中的数据(windows下)
    一、启动服务(网上查)1、启动zookeeper2、启动kafka3、启动flink二、写producerpublicvoidkafkaProducer(List<ResultBean>opcValue)throwsException{......
  • PaddleOCR在 windows下的webAPI部署方案
    很多小伙伴在使用OCR时都希望能过采用API的方式调用,这样就可以跨端跨平台了。本文将介绍一种基于python的PaddleOCR识方案。喜欢的可以关注公众号,获取更多内容。#一、w......