最大 tcp 连接数

子凡 问答 2019-06-17 16:36:38 阅读(...)

TCP并发连接数就是防止死传输的线程,TCP连接数量越大,成功可能性越大。理论上的单机最大连接数,在实际环境中,受到机器资源、操作系统等的限制,特别是sever端,其最大并发tcp连接数远不能达到理论上限。

TCP 并发连接数就是防止死传输的线程,TCP 连接数量越大,成功可能性越大。理论上的单机最大连接数,在实际环境中,受到机器资源、操作系统等的限制,特别是 sever 端,其最大并发 tcp 连接数远不能达到理论上限。

TCP

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

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

在 unix/linux 下限制连接数的主要因素是内存和允许的文件描述符个数(每个 tcp 连接都要占用一定内存,每个 socket 就是一个文件描述符),另外 1024 以下的端口通常为保留端口。在默认 2.6 内核配置下,经过试验,每个 socket 占用内存在 15~20k 之间。

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

启动线程数=【任务执行时间/(任务执行时间-IO 等待时间)】*CPU 内核数

最佳启动线程数和 CPU 内核数量成正比,和 IO 阻塞时间成反比。如果任务都是 CPU 计算型任务,那么线程数最多不超过 CPU 内核数,因为启动再多线程,CPU 也来不及调度;相反如果是任务需要等待磁盘操作,网络响应,那么多启动线程有助于提高任务并发度,提高系统吞吐能力,改善系统性能。

在 Linux 平台上,无论编写客户端程序还是服务端程序,在进行高并发 TCP 连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个 TCP 连接都要创建一个 socket 句柄,每个 socket 句柄同时也是一个文件句柄)。

在 Linux 上编写支持高并发 TCP 连接的客户端通讯处理程序时,有时会发现尽管已经解除了系统对用户同时打开文件数的限制,但仍会出现并发 TCP 连接数增加到一定数量时,再也无法成功建立新的 TCP 连接的现象。出现这种现在的原因有多种。

收藏 0个人收藏
走进科技生活方式

评论交流

泪雪默认头像 请「登录」后参与评论
  1. 加载中..

相关推荐

  • MacOS Monterey

    MacOS Monterey正式发布,但其最大功能被推迟

    Apple 推出了最新版本的 Mac 操作系统 MacOS Monterey。该软件在 WWDC 2021 上首次发布,自夏季以来一直处于测试阶段,最终准备发布。准备好运行了吗?它为 Mac 带来了一系列出色的新功能。
  • 最大爬坡度是什么

    最大爬坡度是什么

    最大爬坡度是指汽车满载时在良好路面上用第一挡克服的最大坡度,表征汽车的爬坡能力,是评价汽车动力性的指标之一。这种汽车爬坡能力的计量方法就是百分比坡度,用坡的高度和水平距离的比例来表示即百分比坡度=tgθ×100%,其中θ是坡面与水平面的夹角。
  • 最大涉水深度是什么

    最大涉水深度是什么

    最大涉水深度即轮胎触地点与发动机进气口之间的距离,英文名称Wattiefe。最大涉水深度是指在安全行驶条件下时,能涉水通过的最大深度,也就是安全深度。同时也是评价汽车越野通过性的重要指标,最大涉水深度越大,其涉水能力越强。
  • 最大期望算法是什么

    最大期望算法是什么

    最大期望算法(EM)是一类通过迭代进行极大似然估计的优化算法,通常作为牛顿迭代法的替代用于对包含隐变量或缺失数据的概率模型进行参数估计。
  • MPTCP是什么

    MPTCP是什么

    MultiPath TCP(MPTCP)由互联网工程任务组(IETF)MultiPath TCP工作组研发,其目的是允许传输控制协议(TCP)连接使用多个路径来最大化信道资源使用。
  • TCP UDP

    tcp和udp有什么区别

    1、TCP 面向连接(如打电话要先拨号建立连接);UDP 是无连接的,即发送数据之前不需要建立连接。2、TCP 连接只能是点到点、一对一的;UDP 支持一对一,一对多,多对一和多对多的交互通信。