服务器的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.mzph.cn/news/590192.shtml

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

相关文章

mysql基础-表操作

环境&#xff1a; 管理工具&#xff1a;Navicat 数据库版本&#xff1a;5.7.37 mysql的版本&#xff0c;我们可以通过函数&#xff0c;version()进行查看&#xff0c;本次使用的版本如下&#xff1a; 目录 1.管理工具 1.1创建表 1.2.修改表名 1.3.复制表 1.4.删除表 2…

python开发的app有哪些,python如何开发小软件

这篇文章主要介绍了python开发的app有哪些&#xff0c;具有一定借鉴价值&#xff0c;需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获&#xff0c;下面让小编带着大家一起了解一下。 Python 无处不在&#xff0c;可以说是现代的 C 编程语言&#xff0c;你可以在任何地…

寄存器的相关知识

CPU原理和结构详解 一、CPU概述 中央处理器&#xff08;CPU&#xff09;&#xff0c;是计算机的核心部件&#xff0c;负责执行计算机程序中的指令&#xff0c;控制计算机的运算和逻辑判断。CPU的性能直接决定了计算机的运行速度和效率。 二、CPU工作原理 CPU的工作原理可以概括…

【记录】开始学习网络安全

本文持续更新学习进度 背景 在私企干了5年虚拟化、云原生相关的运维&#xff0c;学到了很多&#xff0c;但不成体系。老板是清华毕业法国留学在德勤干过&#xff0c;最后回国创业的野路子。我工作是为了更好的生活&#xff0c;我挺担心老板因为家庭变故或者炒个原油宝&#x…

【Vue3】请求参数

1. x-www-form-urlencoded 请求方式&#xff1a;POST nameJohn&age25export const userRegisterService (registerData) > {// 直接传入会是 json 格式// URLSearchParams 将 json 格式转为 x-www-form-urlencoded 格式const params new URLSearchParams();for (let…

54.网游逆向分析与插件开发-游戏增加自动化助手接口-项目需求与需求拆解

内容来源于&#xff1a;易道云信息技术研究院VIP课 项目需求&#xff1a; 为游戏增加VIP功能-自动化助手。自动化助手做的是首先要说一下背景&#xff0c;对于授权游戏来讲它往往年限都比较老&#xff0c;老游戏和新游戏设计理念是不同的&#xff0c;比如说老游戏基本上在10年…

<软考高项备考>《论文专题 - 40采购管理(4) 》

4 过程3-控制采购 4.1 问题 4W1H过程做什么管理采购关系、监督合同绩效、实施必要的变更和纠偏&#xff0c;以及关闭合同的过程作用&#xff1a;确保买卖双方履行法律协议&#xff0c;满足项目需求为什么做为保证采购活动顺利进行&#xff0c;采购物品符合项目要求谁来做组织…

easyx的窗口函数

文章目录 前言一、EasyX的颜色二、EasyX的坐标和设备1&#xff0c;EasyX的坐标2&#xff0c;EasyX的设备 三、窗口函数1&#xff0c;初始化窗口函数2&#xff0c;关闭绘图窗口3&#xff0c;设置窗口背景板颜色4&#xff0c;清空绘图设备 前言 easyx是针对c的图形库&#xff0c;…

360高级java面试真题

今年IT寒冬&#xff0c;大厂都裁员或者准备裁员&#xff0c;作为开猿节流主要目标之一&#xff0c;我们更应该时刻保持竞争力。为了抱团取暖&#xff0c;林老师开通了《知识星球》&#xff0c;并邀请我阿里、快手、腾讯等的朋友加入&#xff0c;分享八股文、项目经验、管理经验…

在kuboard页面配置harbor地址,配置私有仓库

点击项目-配置中心-密文&#xff0c;配置harbor地址 配置完仓库地址需要在对应的k8s master节点 worker节点&#xff0c;配置私有仓库地址要是不配置会报错 [rootk8smaster ~]# docker login 10.4.7.9:80/ -u admin -p Harbor12345 WARNING! Using --password via the CLI is…

第三代半导体SiC 专业术语及指标解释

SiC &#xff1a; 化合物半导体材料&#xff0c;第三代半导体材料代表&#xff0c;主要用于功率半导体领域 GaN &#xff1a; 化合物半导体材料&#xff0c;第三代半导体材料代表&#xff0c;主要用于高频射频领域 GaAs&#xff1a; 化合物半导体材料&#xff0c;第二…

shell中数组和元组---应用与了解

shell中数组和元组—应用与了解 在Shell中&#xff0c;数组和元组是两种用于存储多个值的数据结构。它们都可以存储多个元素&#xff0c;但它们的使用方式和语法有所不同。 一、数组 定义数组 在Shell中&#xff0c;可以使用或()来定义数组。例如&#xff1a; arr1("a…

二分查找 经典例题

// 返回都是 r// 区间划分为[l,mid] 和 [mid1,r]&#xff0c;选择此模板 int bsec1(int l, int r) {while (l < r){int mid (l r)/2;//此处不加下面加if (check(mid)) r mid;else l mid 1;}return r; }// 区间划分为[l,mid-1] 和 [mid,r]&#xff0c;选择此模板 int bs…

java常见面试题:什么是抽象类?什么是接口?它们之间的区别是什么?

抽象类和接口是Java中的两种抽象类型&#xff0c;它们都可以用来定义抽象方法和属性&#xff0c;但它们之间存在一些重要的区别。 抽象类&#xff08;Abstract Class&#xff09;&#xff1a; 抽象类是一种特殊的类&#xff0c;它不能被实例化。抽象类可以包含普通属性和方法…

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

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

数据结构:队列(链表和数组模拟实现)

目录 1.何为队列 2.链表模拟实现 2.1 节点和队列创建 2.2 初始化队列 2.3 入队操作 2.4 出队操作 2.5 遍历队列 2.6 获取队首和队尾元素 2.7 判断队列是否为空 2.8 完整实现 3. 数组模拟实现 3.1 创建队列 3.2 入队和出队操作 3.3 遍历队列 3.4 获取队首和队尾元…

数据转换的三剑客:Pandas 中 apply、map 和 applymap 方法的应用指南

数据转换的三剑客&#xff1a;Pandas 中 apply、map 和 applymap 方法的应用指南 ​ 在 Pandas 中&#xff0c;apply、map 和 applymap 是常用的数据转换和处理方法&#xff0c;它们为数据分析和数据处理提供了灵活的功能。这些方法可以根据具体的需求选择合适的方法进行操作。…

2023结婚成家,2024借势起飞

您好&#xff0c;我是码农飞哥&#xff08;wei158556&#xff09;&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f4aa;&#x1f3fb; 1. Python基础专栏&#xff0c;基础知识一网打尽&#xff0c;9.9元买不了吃亏&#xff0c;买不了上当。 Python从入门到精…

今晚咱们一起来场特别的技术跨年!!

▼最近直播超级多&#xff0c;预约保你有收获 今晚跨年直播&#xff1a;《LLM在电商推荐系统的应用案例实战》 —1— 今晚咱们来场技术跨年&#xff01; LLM 大模型无疑是2023年最重磅的技术&#xff0c;逐渐在各行各业产生了越来越重要的实质影响&#xff0c;2024年的钟声今晚…