美文网首页
单台Linux服务器最大TCP连接数

单台Linux服务器最大TCP连接数

作者: Qcrawler | 来源:发表于2018-11-08 10:38 被阅读7次

前段时间看到一个说法,由于一台server的最大端口数是65536,端口0有特殊含义,不能使用,这样可用端口最多只有65535,所以在全部作为client端的情况下,最大tcp连接数为65535,这些连接可以连到不同的server ip。而操作系统上端口号1024以下是系统保留的,从1024-65535是用户使用的。由于每个TCP连接都要占一个端口号,所以我们最多可以有60000多个并发连接。我想有这种错误思路朋友不在少数吧?那事实是否如此呢?

在此,我们或许需要先了解一下网络编程的相关知识。

首先,系统如何标识一个tcp连接。系统用一个4四元组来唯一标识一个TCP连接:{local ip, local port,remote ip,remote port}。

好吧,我们拿出《UNIX网络编程:卷一》第四章中对accept的讲解来看看概念性的东西,第二个参数cliaddr代表了客户端的ip地址和端口号。而我们作为服务端实际只使用了bind时这一个端口,说明端口号65535并不是并发量的限制。

也就是说,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 问题。

相关文章

  • 单台Linux服务器最大TCP连接数

    前段时间看到一个说法,由于一台server的最大端口数是65536,端口0有特殊含义,不能使用,这样可用端口最多只...

  • 小记TCP keepalive

    前几天在调查一个Kafka服务器tcp连接数过大的问题。具体情况是单台Kafka的tcp连接数超过了3万,都是ES...

  • 并发问题

    一、单台服务器上的并发TCP连接数可以有多少 常识一:文件句柄限制 在linux下编写网络服务器程序的朋友肯定都知...

  • TCP服务器端口数,最大连接数以及MaxUserPort的关系辨

    关于TCP服务器最大并发连接数有一种误解就是“因为端口号上限为65535,所以TCP服务器理论上的可承载的最大并发...

  • 在Linux操作系统中怎么评估tcp连接数

    1.首先,客户端和服务器建立的每个TCP连接都会占用服务器内存,所以最大TCP连接数和内存成正比。简单估算为最大内...

  • 详解Linux服务器最大tcp连接数

    网络编程 在tcp应用中,server事先在某个固定端口监听,client主动发起连接,经过三路握手后建立tcp连...

  • Tomcat优化之线程池优化

    一、线程池优化 maxConnections -- 最大连接数 1、受服务器内核影响,linux 通过 ulimi...

  • Netty Tcp 负载均衡

    为什么要负载均衡 随着设备连接数增多,单台服务器支撑的TCP长连接数有限,这个时候程序架构就需要改变,一般都会采取...

  • Tcp知识整理一

    Linux TCP不同状态的连接数统计 这两条常见指令netstat -tan |grep ^tcp |awk '...

  • 性能测试相关术语

    1、并发连接数 并发连接数:是指客户端向服务器发起请求,并建立TCP连接。每秒钟服务器连接TCP的总数量就是并发连...

网友评论

      本文标题:单台Linux服务器最大TCP连接数

      本文链接:https://www.haomeiwen.com/subject/hjbixqtx.html