TCP最大连接数问题总结

  最大TCP连接数量限制有:可用端口号数量、文件描述符数量、线程、内存、CPU等。每个TCP连接都需要以下资源,如图所示:
在这里插入图片描述

1、可用端口号限制

Q:一台主机可以有多少端口号?端口号与TCP连接?是否能修改?端口号限制因素?

第一:端口号是16位的,所以总共有65535个,即可创建65535个TCP连接

第二:端口分为知名端口(01023)、注册端口(102449511)、动态/私有端口(49152~65535)

第三:端口数可以修改。

//查看当前主机可用端口范围
[iot]$ cat /proc/sys/net/ipv4/ip_local_port_range 
1024  65000

**修改:**vim /etc/sysctl.conf,对这个文件进行修改,只需在sysctl.conf文件中添加一行记录即可。如:

//新增100个可用端口:60000~60099
net.ipv4.ip_local_port_range = 60000 60099

2、文件描述符限制

  每建立一个TCP连接,操作系统就得分配一个文件描述符,linux 对可打开的文件描述符的数量分别作了三个方面的限制。分别是:

**系统级:**当前系统可打开的最大数量,通过 cat /proc/sys/fs/file-max 查看

**用户级:**指定用户可打开的最大数量,通过 cat /etc/security/limits.conf查看

**进程级:**单个进程可打开的最大数量,通过 cat /proc/sys/fs/nr_open查看

[iot ~]$ cat /proc/sys/fs/file-max
100000
[iot ~]$ cat /proc/sys/fs/nr_open
100000
[iot ~]$ cat /etc/security/limits.conf
...
* soft nproc 100000
* hard nproc 100000

修改: 可修改单个进程最大文件描述符限制

//修改单个进程可打开的最大文件描述符限制为100
echo 100 > /proc/sys/fs/nr_open

3、线程的限制

C10K:当服务器连接数达到 1 万且每个连接都需要消耗一个线程资源时,操作系统就会不停地忙于线程的上下文切换,最终导致系统崩溃。

传统的多线程并发模型:一个TCP连接就需要创建一个线程

I/O多路复用 :一个线程可以管理多个 TCP 连接的资源

解决: 不使用传统的多线程并发模型,而采用I/O多路复用技术

4、内存的限制

  TCP连接数过大可能会出现: ERROR: out of memory ,即内存溢出。

**原因:**每个TCP连接本身,以及这个连接所用到的缓冲区,都是需要占用一定内存的,现在内存已经被占满了,不够用了就会报这个错。

5、CPU的限制

  每个TCP连接都是需要占用CPU资源的,若占用CPU资源过多,则会导致死机,用户啥也干不了,然后就重启了,TCP连接也就全没了。

6、总结

资源一台Linux的资源一个TCP占用资源占满的结果
CPU看你花多少钱买的看你用它干嘛电脑卡死
内存看你花多少钱买的取决于缓冲区大小OOM
临时端口号ip_local_port_range1cannot assign requested address
文件描述符fs.file-max1too many open files
进程/线程数ulimit -n看IO模型系统崩溃

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/102758.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Wireshark数据抓包分析之互联网协议(IP协议)

一、实验目的: 通过wireshark抓包分析IP协议的具体内容 二、预备知识: 1.IP地址存在的意义,就是为了弥补mac地址的不足,用于区分不同的网络 2.还有一些ip协议、ip数据包这些东西 三、网络拓扑 四、实验过程: part1&…

Docker容器与虚拟化技术:Gitlab账户注册

目录 一、实验 1.gitlab 一、实验 1.gitlab (1) 概念 GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。 (2)官网 The DevSecOps Platform | GitLab (3&#…

OpenAI推出GPT-3.5Turbo微调功能并更新API;Midjourney更新局部绘制功能

🦉 AI新闻 🚀 OpenAI推出GPT-3.5Turbo微调功能并更新API,将提供GPT-4微调功能 摘要:OpenAI宣布推出GPT-3.5Turbo微调功能,并更新API,使企业和开发者能够定制ChatGPT,达到或超过GPT-4的能力。通…

uniapp - 实现卡片式胶囊单选后右上角出现 “√“ 对勾对号选中效果功能,适用于小程序h5网页app全平台通用(一键复制组件源码,开箱即用!)

效果图 uniapp全平台兼容(小程序/h5网页/app)实现点击选择后,右上角出现 √ 对号效果(角标形式展现),功能组件, 改个样式,直接复制使用该组件。 组件源码 在 components 组件文件夹下,随便建立一个 .vue 文件,一键复制下方源码。

Centos7查看磁盘和CUP统计信息iostat命令

Centos7查看磁盘和CUP统计信息iostat命令 Centos7内存高|查看占用内存命令 docker实战(一):centos7 yum安装docker docker实战(二):基础命令篇 docker实战(三):docker网络模式(超详细) docker实战(四):docker架构原理 docker实战(五):docker镜像及仓库配置 docker实战(六…

如何在App里拉起小程序?

什么是小程序运行时框架? FinClip 的小程序编程模型是分为多个页面,每个页面有自己的 template、CSS 和 JS,实际在运行的时候,业务逻辑的 JS 代码是运行在独立的 JavaScript 引擎中,每个页面的 template 和 CSS 是运行…

vue组件的scope 以及 如何样式穿透

个人复习!!! 有什么用 让当前组件的样式不会修改到其它地方的样式,使用了data-v-hash的方式来使css有了它对应模块的标识 实现原理 1、给HTML的dom节点添加一个不重复的data属性(例如: data-v-5558831a)来唯一标识这个dom 元素…

Linux下彻底卸载jenkins

文章目录 1、停服务进程2、查找安装目录3、删掉相关目录4、确认已完全删除 1、停服务进程 查看jenkins服务是否在运行,如果在运行,停掉 ps -ef|grep jenkins kill -9 XXX2、查找安装目录 find / -name "jenkins*"3、删掉相关目录 # 删掉相…

Prompt本质解密及Evaluation实战(一)

一、基于evaluation的prompt使用解析 基于大模型的应用评估与传统应用程序的评估不太一样,特别是基于GPT系列或者生成式语言模型,因为模型生成的内容与传统意义上所说的内容或者标签不太一样。 以下是借用了ChatGPT官方的evaluation指南提出的对结果的具…

【负载均衡】Nacos简单入门

Nacos简单入门 快速安装 在Nacos的GitHub页面,提供有下载链接,可以下载编译好的Nacos服务端或者源代码: 下载完压缩包之后,放在任意目录下面进行解压: GitHub主页:https://github.com/alibaba/nacos G…

MyBatid动态语句且模糊查询

目录 什么是MyBtais动态语句??? MyBatis常用的动态标签和表达式 if标签 Choose标签 where标签 MyBatis模糊查询 #与$的区别 ​编辑 MyBatis映射 resultType resultMap 什么是MyBtais动态语句???…

2.IO控制器

第五章 I/O管理 2.I/O控制器 I/O控制器的组成: I/O控制器负责接收和识别从CPU发来的各种命令,同时需要翻译为具体的设备可以明白的命令,通过控制器与设备的接口发送给具体的设备,让设备执行相应的操作。 一个I/O控制器有可能会负…

vue页面转pdf后分页时文字被横向割裂

效果 预期效果 //避免分页被截断async outPutPdfFn (id, title) {const _t this;const A4_WIDTH 592.28;const A4_HEIGHT 841.89;// dom的id。let target document.getElementById(pdf);let pageHeight target.scrollWidth / A4_WIDTH * A4_HEIGHT;// 获取分割dom&#xf…

流媒体内容分发终极解决方案:当融合CDN与P2P视频交付结合

前言 随着互联网的发展,流媒体视频内容日趋增多,已经成为互联网信息的主要承载方式。相对传统的文字,图片等传统WEB应用,流媒体具有高数据量,高带宽、高访问量和高服务质量要求的特点,而现阶段互联网“尽力…

H.265视频无插件流媒体播放器EasyPlayer.js播放webrtc断流重连的异常修复

H5无插件流媒体播放器EasyPlayer属于一款高效、精炼、稳定且免费的流媒体播放器,可支持多种流媒体协议播放,可支持H.264与H.265编码格式,性能稳定、播放流畅,能支持WebSocket-FLV、HTTP-FLV,HLS(m3u8&#…

C语言之扫雷游戏实现篇

目录 主函数test.c 菜单函数 选择循环 扫雷游戏实现分析 整体思路 问题1 问题2 问题3 问题4 游戏函数(函数调用) 创建游戏盘数组mine 创建游戏盘数组show 初始化游戏盘数组InitBoard 展示游戏盘DisplayBoard 游戏盘置雷SetMine 游戏…

【RocketMQ】NameServer总结

NameServer是一个注册中心,提供服务注册和服务发现的功能。NameServer可以集群部署,集群中每个节点都是对等的关系(没有像ZooKeeper那样在集群中选举出一个Master节点),节点之间互不通信。 服务注册 Broker启动的时候会…

【2023新教程】树莓派定时自动拍照并上传腾讯云对象存储COS

1 换源 仅适用于Release date: May 3rd 2023、Debian version: 11 (bullseye)这个树莓派OS版本,其他版本不保证有效。 首先使用如下命令,查看自己树莓派的架构。 uname -a结果如下: 如果红圈处显示为aarch64,使用命令sudo na…

JVM元空间溢出的排除思路

背景: java的应用我们为了防止元空间的无限扩展,一般都会设置MaxMetaSpace参数,一般来说只要这个值是512M或者1G左右就足够了,不过今天遇到一个meta空间溢出问题,简单记录下排除的思路 meta元空间溢出 最开始的现象…

【hive】简单介绍hive的几种join

文章目录 前言1. Common Join2. Map Join介绍:使用方法:限制: 3. Bucket Map Join介绍:好处:使用条件:使用方法: 4. Sort Merge Bucket Map Join介绍:如何使用: 5. Skew …