服务器的TCP连接限制:如何优化并提高服务器的并发连接数?

🌈🌈🌈🌈🌈🌈🌈🌈
欢迎关注公众号(通过文章导读关注),发送【资料】可领取 深入理解 Redis 系列文章结合电商场景讲解 Redis 使用场景中间件系列笔记编程高频电子书
【11来了】文章导读地址:点击查看文章导读!
🍁🍁🍁🍁🍁🍁🍁🍁

服务器的TCP连接限制:如何优化并提高服务器的并发连接数?

在这里插入图片描述

Linux服务器最大能打开的文件数量

在 Linux 服务器中一切皆文件,将网络接口、进程等抽象概念都视作文件,以统一的方式进行管理和操作

那么在服务器中,能打开的最大文件数量受 4 个参数影响,分别是:

  1. fs.file-max:内核参数,系统级别的限制表示整个系统可以打开的最大文件数,root 用户不会受此参数影响

  2. soft nofile:用户级别的软限制,限制单个进程上可以打开的最大文件数,soft nofile 的值比 fs.file-max 的值要小得多

  3. hard nofile:用户级别的硬限制,限制单个进程上可以打开的最大文件数,默认情况下,hard nofile 的值通常大于等于 soft nofile 的值,soft nofile 是一个警告阈值,超过了并不会阻止文件描述符的打开,而是发出警告,但是 hard nofile 是实际的最大限制,超过它将无法打开文件描述符

  4. fs.nr_open:内核参数,进程级别的限制,限制单个进程可以打开的最大文件数

    可以通过命令 sysctl fs.nr_open 查看该值大小

这三个参数之间的值大小设置需要注意以下几点:

  • hard nofile 的值大于等于 soft nofile
  • fs.nr_open 的值大于 hard nofile
  • fs.nr_open 的值不要超过系统的硬件资源限制

调整服务器能打开的最大文件数

fs.file-max 和 fs.nr_open 参数设置

通过修改 /etc/sysctl.conf 文件来修改能打开的最大文件数

vim /etc/sysctl.conf
# 添加如下行
fs.file-max=1100000 // 系统级别设置成110万,多留点 buffer  
fs.nr_open=1100000 // 进程级别也设置成110万,因为要保证比 hard nofile大
# 使配置生效
sysctl -p

soft nofile 和 hard nofile 参数设置

显示当前用户的最大文件描述符限制可以使用以下命令:

ulimit -n

这个值可以通过修改 /etc/security/limits.conf或者/etc/security/limits.d/* 的值,添加如下行:

vi /etc/security/limits.conf
# 将用户级别都设置成 100w
* soft nofile 1000000
* hard nofile 1000000

一台服务器最大支持的连接数量

TCP 连接建立之后,其实就是客户端和服务器端在内存中维护的一组 socket 内核对象,只要存储 源IP、源端口号、目标IP、目标端口号

那么在理想情况下,如果只维护客户端和服务端的 socket 对象的话,最大可以建立的连接数量是由 IP + 端口号来决定的,只要 IP + 端口号不重复,那么就可以找到对应地址,建立连接,理论最大连接数量可以建立 2^32(IP数) * 2^16(端口数) ≈ 两百多亿 条连接

但是这肯定是不可能的,这么多条连接,内存也放不下呀,而且连接中如果有数据请求,需要 CPU 去处理,CPU 也处理不过来

因此最大的连接数量收到了 内存CPU 两个方面的限制

在真实场景中,有频繁的数据收发的数据处理,一台服务器可以支撑 1000 个连接就算比较好的了,在建立 TCP 连接中,服务器端的开销并不在连接的建立上,而是花在了对连接中的数据进行业务逻辑处理的过程中,这个过程是很占用 CPU 的!

一台客户机器最多可以发出多少TCP连接?

上边已经说了,建立 TCP 连接,其实就是维护一组 socket 内核对象的数据,也就是: 源IP、源端口号、目标IP、目标端口号

那么只要有其中一个元素不同,便可以区分出是不同的 TCP 连接

假设客户机器的 IP 地址不会发生变化,并且客户端只和一台 server 服务器建立 TCP 连接,那么一台客户机器可以发出的 TCP 连接的数量取决源端口号 的数量,源端口号的可用范围是 【0-65535】,所以一台客户机器对一台 server 服务器可以建立的最大 TCP 连接的数量是:65535 个连接

但是客户端的可用端口范围一般达不到 65535 个,受到了内核参数 ip_local_port_range 的影响,默认值是 32768 61000,可以通过修改 /etc/sysctl.conf 文件来调整可用端口范围:

# 修改文件
vi /etc/sysctl.conf
# 添加如下内容
net.ipv4.ip_local_port_range = 32768 60999
# 使修改生效
sysctl -p

相关问题

首先,在三次握手中,socket 的连接请求通过一个队列进行存储,队列长度通过参数 net.core.somaxconn 来控制,默认是 128,如果连接请求的数量很大,而队列长度不够,则会导致后续的连接请求被抛弃,可以通过修改此参数的值来增加存储请求的队列长度,减少服务端的请求丢失情况!

# 查看当前系统的net.core.somaxconn值
sysctl net.core.somaxconn
# 修改队列长度
vi /etc/sysctl.conf
# 添加如下内容
net.core.somaxconn = <value>
# 使修改生效
sysctl -p

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

目标检测-One Stage-YOLOv1

文章目录 前言一、YOLOv1的网络结构和流程二、YOLOv1的损失函数三、YOLOv1的创新点总结 前言 前文目标检测-Two Stage-Mask RCNN提到了Two Stage算法的局限性&#xff1a; 速度上并不能满足实时的要求 因此出现了新的One Stage算法簇&#xff0c;YOLOv1是目标检测中One Stag…

TecoGAN视频超分辨率算法

1. 摘要 对抗训练在单图像超分辨率任务中非常成功&#xff0c;因为它可以获得逼真、高度细致的输出结果。因此&#xff0c;当前最优的视频超分辨率方法仍然支持较简单的范数&#xff08;如 L2&#xff09;作为对抗损失函数。直接向量范数作损失函数求平均的本质可以轻松带来时…

C++数据结构-栈

目录 栈顺序栈链栈 栈 栈是允许在表的一端进行插入和删除的线性表。表中允许插入删除的一端是栈顶&#xff0c;栈顶的当前位置是动态变化的&#xff1b;不允许插入和删除的一端是栈底&#xff0c;栈底的位置是不变的。当表中没有元素时称为空栈&#xff0c;插入数据的运算称为…

从 MySQL 的事务 到 锁机制 再到 MVCC

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、事务 1.1 含义 1.2 ACID 二、锁机制 2.1 锁分类 2.2 隔离级别 三、MVCC 3.1 介绍 3.2 隔离级别 3.3 原理 四、总结 前…

python使用动态规划解决不同路径问题

针对二维动态规划&#xff0c;还有一个问题就是关于求不同路径的实例&#xff0c;主要是说明在实际应用的场景中&#xff0c;要理解透彻实际问题的真正目的&#xff0c;就可以灵活实现代码编写。 对于求不同路径问题描述&#xff0c;对于一个机器人&#xff0c;处在一个mxn的网…

【Unity美术】Unity工程师对3D模型需要达到的了解【二】

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;Uni…

基于JavaWeb实验室预约管理系统(源码+数据库+文档)

一、项目简介 本项目是一套基于JavaWeb实验室预约管理系统&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;e…

【MATLAB】鲸鱼算法优化混合核极限学习机(WOA-HKELM)时序预测算法

有意向获取代码&#xff0c;请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 鲸鱼算法优化混合核极限学习机&#xff08;WOA-HKELM&#xff09;是一种时序预测算法&#xff0c;它结合了鲸鱼算法和混合核极限学习机&#xff08;HKELM&#xff09;的优点。以下是该算法…

Ts自封装WebSocket心跳重连

WebSocket是一种在单个TCP连接上进行全双工通信的协议&#xff0c;允许客户端和服务器之间进行双向实时通信。 所谓心跳机制&#xff0c;就是在长时间不使用WebSocket连接的情况下&#xff0c;通过服务器与客户端之间按照一定时间间隔进行少量数据的通信来达到确认连接稳定的手…

大模型微调LoRA训练与原理

1.什么是LoRA&#xff1f; LoRA的全称是LOW-RANK-ADAPTATION。是一种实现迁移学习的技术手段。 2. 矩阵的秩&#xff1f; 秩是一个向量空间的基向量的个数。例如&#xff1a;二维平面坐标系存在两个基向量&#xff0c;平面上任意的一个向量都可以使用这两个基向量进行线性表示…

PS制作淘宝主图

PS制作淘宝主图 1.制作主图主页1.1新建800x800画板1.2填充前景色&#xff1a;altdel1.3选择圆角矩形&#xff0c;半径501.4按住ALT&#xff0c;往下投复制 2.调色 1.制作主图主页 1.1新建800x800画板 1.2填充前景色&#xff1a;altdel 1.3选择圆角矩形&#xff0c;半径50 居中对…

矿用以太网通讯的电缆传输可行性分析

概述 井下通讯系统是煤矿安全及生产调度必不可少的设施&#xff0c;近年泄露技术、小灵通技术、无线对讲技术及WIFI技术相继应用于煤矿井下。WIFI技术在地面的短距离无线通讯中已有多年的应用&#xff0c;相对于其他的无线宽带技术来说比较成熟可靠。 “泄露”技术及低频穿透技…

VC2019更改文件名称代码

VC2019更改文件名称代码 效果代码 效果 华为手机拍摄的视频默认名称是“VID_20231213_111723”,图片名称是“IMG_20231213_111723”&#xff0c;需要批量将“VID”改为“IMG” 代码 代码&#xff08;C#&#xff09;&#xff1a; csharpStringBuilder sbnew StringBuilder()…

ROS TF坐标变换 - 静态坐标变换

目录 一、静态坐标变换&#xff08;C实现&#xff09;二、静态坐标变换&#xff08;Python实现&#xff09; 如前文所属&#xff0c;ROS通过广播的形式告知各模块的位姿关系&#xff0c;接下来详述这一机制的代码实现。 模块间的位置关系有两种类型&#xff0c;一种是相对固定…

使用spring boot实现异常的统一返回

在这个前后端分离的时代&#xff0c;一个 统一的数据格式非常重要。本次我们实现用spring boot实现一下返回给前端数据的统一格式&#xff0c;不再出现服务器500的错误。 新建一个spring boot项目&#xff0c;并导入knife4j的依赖。 写一个controller控制器&#xff0c;用来是…

Vue中全局事件总线的配置和原理

实现任意组件之间的通信 任意组件通信的原理&#xff1a; 1、实现任意组件之间的通信,需要一个傀儡。这个傀儡既能被vm访问到,也能被VueComponent访问。 2、VueComponent.prototype.proto Vue.prototype为图上1.0黄色的线路。是Vue让组件实例对象VueComponent可以访问到Vue原…

将学习自动化测试时的医药管理信息系统项目用idea运行

将学习自动化测试时的医药管理信息系统项目用idea运行 背景 学习自动化测试的时候老师的运行方式是把医药管理信息系统项目打包成war包后再放到tomcat的webapp中去运行&#xff0c;于是我想着用idea运行会方便点&#xff0c;现在记录下步骤方便以后查找最开始没有查阅资料&am…

【栈】根据模式串构造最小数字

import java.util.ArrayDeque; import java.util.Deque;/*** 思路&#xff1a;如果是字符‘I’直接对应的数字加入结果res中&#xff0c;如果是‘D’将对应的数字加入栈中。* 再次遇到‘I’先将对应的数字加入结果res中&#xff0c;然后再将栈中的元素从栈顶取出存放在* …

simulink代码生成(五)——ePWM模块初级应用

前面分别讲到了SCI及ADC的配置及使用&#xff0c;现在梳理一下ePWM的配置和使用&#xff1b; 先打一些基础的DSP28335的基础知识&#xff1b; F28335 关于ePWM中断与SOC采样信号的一些思考_socasel-CSDN博客 F28335 ePWM模块简介——TMS320F28335学习笔记&#xff08;四&…

受“博比特虫”启发可实现多模态传感抓取动作的软执行器来了

软执行器可以实现对易碎和不规则形状物体的精细自适应抓取&#xff0c;这在生物和工程系统中至关重要。然而&#xff0c;目前软机器人在抓取的时候往往受制于抓取能力不足和功能限制。 博比特虫捕获猎物 最近研究人员提出了一种受博比特虫启发的多模态传感自适应软抓取器&…
最新文章