`

单机最大tcp连接数

 
阅读更多
from:
http://www.cnblogs.com/mydomain/archive/2013/05/27/3100835.html



网络编程

在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
分享到:
评论

相关推荐

    p124 - p163 TCP三次握手 四次挥手原理解析

    TCP 连接数,约为 2 的 48 次方。 UDP 和 TCP 的主要区别是,UDP 不提供复杂的控制机制,利用 IP 提供面向“无连接”的通信服务。UDP 协议真的非常簡單,头部只有 8 个字节(64 位),UDP 的头部格式如下:目标和源...

    易语言-hp-socket Agent模型,单机6w+并发连接数 tcp 压测

    通过对以上技术点的整合与优化,hp-socket Agent模型能够在单机上实现对6万多个并发TCP连接的有效管理和高效处理,这对于构建大型分布式系统、互联网服务或者大数据处理平台等有着重要的实践价值。 在实际应用中,...

    基于TCP传输文件及文件夹的LabVIEW程序

    此外,限制服务器的并发连接数、设置访问权限也能增加系统的安全性。 8. **测试与调试**:为了确保程序的正确性,需要在本地进行充分的测试,包括单机测试和跨网络的测试。可以使用“TCP测试工具”或者自定义的...

    hp-socket Agent模型,单机6w+并发连接数 tcp 压测-易语言

    先感谢 hp-socket 以及各位开源的前辈! 模块是我这 82 年的电脑硬盘里的 模块只用了 hp-socket 传送 : ...放上一个不成器的tcp压力测试..... 代码写的很烂,各位大佬刀下留情...

    MrioTCP-0.9.9源码

    经过两个多月的测试(编写c++客户端测试及调优系统参数),测试结果得到单机最大带宽吞吐1000M,测试最高TCP长连接100万,每秒处理连接数达4万,此时系统压力load值很低。 总之,它可以发挥一台服务器的最大极限以...

    毕业设计论文范文源码-mariotcp:高性能tcp服务器

    经过两个多月的测试(编写c++客户端测试及调优系统参数),测试结果得到单机最大带宽吞吐1000M,测试最高TCP长连接100万,每秒处理连接数达4万,此时系统压力load值很低。总之,它可以发挥一台服务器的最大极限以...

    MJ.zip_单机 网络

    2. **游戏逻辑**:麻将规则的理解和实现,包括洗牌、发牌、胡牌条件、番数计算等,这些都需要精确无误地用代码表达出来。 3. **单机AI设计**:在单机模式下,AI的设计至关重要。可能涉及各种算法,如最小最大搜索、...

    K8SR6 高可用高可用最佳部署实践

    - TCP连接数:调整TCP连接数,以支持更多的并发连接。 - 内存管理:通过调整swap策略等来优化内存使用效率。 3. **安全设置**:确保操作系统安装最新的安全补丁,并启用防火墙规则来保护数据库的安全。 通过上述...

    达梦数据库单机部署参考文档

    首先设置默认策略为接受(`iptables -P INPUT ACCEPT`和`iptables -P OUTPUT ACCEPT`),然后添加规则允许5236端口的TCP连接进入(`iptables -A INPUT -p tcp --dport 5236 -j ACCEPT`)和离开(`iptables -A OUTPUT...

    易语言单机网络流量监测.zip易语言项目例子源码下载

    4. **流量统计(Traffic Statistics)**:解析后的数据包可以用于计算网络流量,比如上传/下载速度、总流量、连接数等。易语言中的变量和数据结构可以用来存储和处理这些统计信息。 5. **界面显示(User Interface...

    weblogic10.3性能优化参数配置

    在 Weblogic 10.3 中,可以通过修改 `weblogic\user_projects\domains\<domain_name>\config\config.xml` 文件来设置连接池连接数。 4. Weblogic 的服务设置 Weblogic 的服务设置是影响服务器性能的重要参数之一。...

    PHP Socket 网络应用框架 beyod

    测试中,单机10万tcp连接时,消耗内存仅2.4GB。 稳定可靠,可长时间运行, 工作进程崩溃自动恢复。 使用Master-worker方式的多进程、单线程模型。实现了工作进程异常崩溃后的自动重启, 我们熟知的Nginx也使用了Master...

    RAC-异机单机恢复全过程

    - **dispatchers='(PROTOCOL=TCP)(SERVICE=readdb1XDB)'**: 分发器设置。 - **job_queue_processes=10**: 作业队列进程数。 - **log_archive_format='%t_%s_%r.arc'**: 日志归档格式。 - **open_cursors=300**: ...

    hs2000单机版安装指南

    - **增加用户数**:为了确保系统能够顺利运行,需要增加用户数,通常情况下每个运行的恒生系统Windows应用程序会占用一个用户。建议增加至20个用户,这样可以避免因用户数量不足而导致的问题。 - **字符集设置**:...

    红旗下的APACHE配置教程

    例如,`MaxKeepAliveRequests`设置每个连接允许的最大请求数,`MaxClients`设定同时处理的最大客户端连接数。 监控Apache运行状态的命令如`ps`用于查看进程,`apachectl status`查看服务器状态,`netstat`用于检查...

    计算机网络原理实验六_UDP_协议分析实验报告.doc

    UDP(User Datagram Protocol)协议是Internet协议族中的一种无连接的传输层协议,与TCP(Transmission Control Protocol)相比,它提供了更轻量级的服务。在本次实验中,我们通过Ethereal(Wireshark的前身)这个...

    五子棋游戏单机/联机源码-易语言

    4. **数据结构与算法**:游戏状态的存储和检索通常依赖于合适的数据结构,如二维数组表示棋盘,链表或队列管理历史步数。此外,判断棋局胜负可能涉及到深度优先搜索(DFS)、最小最大搜索(Minimax)等算法。 5. **...

    Golang在京东的使用.pptx

    这个系统由4人团队开发,实现了单机并发TCP连接数峰值高达118万,内存占用约23GB,平均负载维持在0.7左右,心跳包发送速率4k/s,垃圾回收(GC)时间稳定在2-3.x秒。系统的高并发处理能力和低资源消耗,充分展示了...

Global site tag (gtag.js) - Google Analytics