当前位置: 首页 > news >正文

linux 最多能创建多少个 TCP 连接?

linux 最大允许TCP连接数

    • 约束一:服务器的端口范围
    • 约束二,服务器文件描述符限制
    • 约束三:系统线程
    • 约束四:系统内存
    • 总结

tcp连接四元组:源ip,源端口 <==> 目标ip,目标端口

连续对同一个目标ip及端口进行tcp连接的建立,最多建立的连接个数受服务器的端口范围限制


约束一:服务器的端口范围

ERROR: connect cannot assign requested address

linux对可使用端口范围限制

cat /proc/sys/net/ipv4/ip_local_port_range
1024 65000

自定义端口范围

vim /etc/sysctl.conf# 添加一行记录
net.ipv4.ip_local_port_range= 60000 60009# 保存后执行
sysctl -p /etc/sysctl.conf

连续对同一ip端口建立连接,在服务器端口不够时,切换目标端口可以继续申请连接(只要四元组不重复即可)


约束二,服务器文件描述符限制

ERROR: socket too many open files

文件描述符不够用了

每一个tcp连接对应一个文件描述符

linux对可打开的文件描述符数量限制

# 系统级:当前系统可打开的最大数量
cat /proc/sys/fs/file-max
# 用户级:指定用户可打开的最大数量
cat /etc/security/limits.conf
# 进程级:单个进程可打开的最大数量
cat /proc/sys/fs/nr_open

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

echo 100 > /proc/sys/fs/nr_open

约束三:系统线程

在多线程并发模型下:每新建一个TCP连接都需要开启一个线程,当开启连接数量过多时,因为线程上下文切换而导致系统响应越来越慢

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

切换到IO多路复用模型


约束四:系统内存

ERROR: out of memory

每个TCP连接本身,以及连接所用到的缓冲区,都需要占用一定的内存

在系统内存足够大的情况下,最终也会因为大量TCP占用线程而导致CPU满载,从而达到瓶颈

总结

linux服务器开启最大TCP连接数?

首先在目标IP和端口固定的情况下,取决于系统对可开启端口范围的限制是多少

在端口范围最够大的情况下,取决于文件描述符的限制(三个级别:系统、用户、进程)

文件描述符限制足够大的情况下,取决于线程模型,如果是多线程模型,即一个TCP连接占用一个线程,那么可能会因为上下文切换而导致CPU满载

加入采用IO多路复用的情况下,仍然需要考虑系统内存是否足够支撑海量的TCP连接,因为每一个TCP连接会占用一些内存

最后如果系统内存也足够大,那么最终的瓶颈会是CPU的线程上下文切换,最终会导致系统卡死

相关文章:

linux 最多能创建多少个 TCP 连接?

linux 最大允许TCP连接数 约束一&#xff1a;服务器的端口范围约束二&#xff0c;服务器文件描述符限制约束三&#xff1a;系统线程约束四&#xff1a;系统内存总结 tcp连接四元组&#xff1a;源ip&#xff0c;源端口 <> 目标ip&#xff0c;目标端口 连续对同一个目标ip及…...

我为何要用wordpress搭建一个自己的独立博客

我在csdn有一个博客&#xff0c;这个博客是之前学习编程时建立的。 博客有哪些好处呢&#xff1f; 1&#xff0c;可以写自己的遇到的问题和如何解决的步骤 2&#xff0c;心得体会&#xff0c;经验&#xff0c;和踩坑 3&#xff0c;可以转载别人的好的技术知识 4&#xff0c;宝贵…...

Linux系统每日定时备份mysql数据

一、创建存储脚本的文件夹 创建文件夹&#xff0c;我的脚本放在/root/dbback/mysql mkdir ... cd /root/dbback/mysql 二、编写脚本 vi backup_mysql.sh 复制脚本内容 DB_USER"填写用户名" DB_PASSWORD"填写密码" DB_NAME"数据库名称" # …...

书生大模型第一关Linux基础知识

任务一&#xff1a;完成SSH连接与端口映射并运行hello_world.py 1.SSH及其端口映射 2.在VSCode中安装插件&#xff1a; 3.创建开发机 最后点击创建&#xff0c;然后可能需要等待一段较长的时间&#xff0c;大概需要5分钟左右&#xff0c;如果需要排队则更长时间 然后选择…...

机器学习之fetch_olivetti_faces人脸识别--基于Python实现

fetch_olivetti_faces 数据集下载 fetch_olivetti_faceshttps://github.com/jikechao/olivettifaces sklearn.datasets.fetch_olivetti_faces(*, data_homeNone, shuffleFalse, random_state0, download_if_missingTrue, return_X_yFalse, n_retries3, delay1.0)[source] L…...

【系统设计】深入理解HTTP缓存机制:从Read-Through缓存到HTTP缓存的交互流程

在现代Web开发中&#xff0c;缓存机制扮演着至关重要的角色。它不仅提升了用户体验&#xff0c;还极大地优化了资源的使用效率。在这篇博文中&#xff0c;我们将从“Read-Through”缓存的概念出发&#xff0c;深入探讨HTTP缓存的工作原理和交互流程&#xff0c;并详细描述max-a…...

FLINK单机版安装部署入门-1

文章目录 FLINK单机版安装部署高于1.9.3需要修改配置文件flink-conf.yaml(低于1.9.3可以跳过)linux启动集群windows下启动Flink实例运行(单机)还有一种方式是上传任务包运行examples\streamingjava: Compilation failed: internal java compiler error高版本启动脚本 FLINK单机…...

深度学习-学习率调整策略

在深度学习中&#xff0c;学习率调整策略&#xff08;Learning Rate Scheduling&#xff09;用于在训练过程中动态调整学习率&#xff0c;以实现更快的收敛和更好的模型性能。选择合适的学习率策略可以避免模型陷入局部最优、震荡不稳定等问题。下面介绍一些常见的学习率调整策…...

【学员提问bug】小程序在onUnload里面调接口,用来记录退出的时间, 但是接口调用还没成功, 页面就关闭了。如何让接口在onUnload关闭前调用成功?

这种问题比较通用&#xff0c;并不涉及到具体方法执行障碍&#xff0c;所以&#xff0c;解决起来也不麻烦。但是新手往往不知道如何做。 在小程序中&#xff0c;如果在 onUnload 中调用 API 记录页面退出时间&#xff0c;但因为页面关闭速度较快导致请求未完成&#xff0c;可以…...

【刷题13】链表专题

目录 一、两数相加二、两两交换链表的节点三、重排链表四、合并k个升序链表五、k个一组翻转链表 一、两数相加 题目&#xff1a; 思路&#xff1a; 注意整数是逆序存储的&#xff0c;结果要按照题目的要求用链表连接起来遍历l1的cur1&#xff0c;遍历l2的cur2&#xff0c;和…...

Python Turtle模块详解与使用教程

Python Turtle模块详解与使用教程 引言 Python是一种广泛使用的编程语言&#xff0c;其简洁易读的语法使得它成为初学者学习编程的理想选择。而Turtle模块则是Python标准库中一个非常有趣且实用的图形绘制工具&#xff0c;特别适合用于教育和学习编程的基础知识。通过Turtle模…...

【PTA】4-2 树的同构【数据结构】

给定两棵树 T1​ 和 T2​。如果 T1​ 可以通过若干次左右孩子互换就变成 T2​&#xff0c;则我们称两棵树是“同构”的。例如图1给出的两棵树就是同构的&#xff0c;因为我们把其中一棵树的结点A、B、G的左右孩子互换后&#xff0c;就得到另外一棵树。而图2就不是同构的。 图一…...

Node.js——fs模块-同步与异步

本文的分享到此结束&#xff0c;欢迎大家评论区一同讨论学习&#xff0c;下一篇继续分享Node.js的fs模块文件追加写入的学习。...

Java基于微信小程序的私家车位共享系统(附源码,文档)

博主介绍&#xff1a;✌stormjun、8年大厂程序员经历。全网粉丝15w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&…...

vscode 创建 vue 项目时,配置文件为什么收缩到一起展示了?

一、前言 今天用 vue 官方脚手架创建工程&#xff0c;然后通过 vscode 打开项目发现&#xff0c;配置文件都被收缩在一起了。就像下面这样 这有点反直觉&#xff0c;他们应该是在同一层级下的&#xff0c;怎么会这样&#xff0c;有点好奇&#xff0c;但是打开资源管理查看&…...

PySpark任务提交

一般情况下&#xff0c;spark任务是用scala开发的&#xff0c;但是对于一些偏业务人员&#xff0c;或者是基于上手的来说python的API确实降低了开发前置条件的难度&#xff0c;首当其冲的就是能跳过Java和Scala需要的知识储备&#xff0c;但是在提交任务到集群的时候就很麻烦了…...

【果蔬购物商城管理与推荐系统】Python+Django网页界面+协同过滤推荐算法+管理系统网站

一、介绍 果蔬购物管理与推荐系统。本系统以Python作为主要开发语言&#xff0c;前端通过HTML、CSS、BootStrap等框架搭建界面&#xff0c;后端使用Django框架作为逻辑处理&#xff0c;通过Ajax实现前后端的数据通信。并基于用户对商品的评分信息&#xff0c;采用协同过滤推荐…...

【大模型】海外生成式AI赛道的关键玩家:OpenAI、Anthropic之外还有谁?

引言 在生成式AI快速发展的今天&#xff0c;不同公司在各自领域发挥着独特作用。本文将从基础模型研发、开发工具框架、垂直领域应用三个维度&#xff0c;为读者梳理当前生成式AI技术领域的主要参与者&#xff0c;帮助开发者更好地把握技术发展方向。 一、基础模型研发公司 O…...

kubevirt cloud-init配置

https://cloudinit.readthedocs.io/en/latest/reference/examples.html (示例) https://cloudinit.readthedocs.io/en/latest/reference/faq.html (常见问题) https://cloudinit.readthedocs.io/en/latest/howto/debug_user_data.html (检查user_data) https://clo…...

Oracle 大表添加索引的最佳方式

背景&#xff1a; 业务系统中现在经常存在上亿数据的大表&#xff0c;在这样的大表上新建索引&#xff0c;是一个较为耗时的操作&#xff0c;特别是在生产环境的系统中&#xff0c;添加不当&#xff0c;有可能造成业务表锁表&#xff0c;业务表长时间的停服势必会影响正常业务…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的学习进度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正确的建议&…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程&#xff1a;首先由HR先筛选一部分简历后&#xff0c;在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如&#xff1a;Boss直聘&#xff08;招聘方平台&#xff09; 直接按照条件进行筛选 例如&#xff1a…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...

Docker 本地安装 mysql 数据库

Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker &#xff1b;并安装。 基础操作不再赘述。 打开 macOS 终端&#xff0c;开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

C语言中提供的第三方库之哈希表实现

一. 简介 前面一篇文章简单学习了C语言中第三方库&#xff08;uthash库&#xff09;提供对哈希表的操作&#xff0c;文章如下&#xff1a; C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...

从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障

关键领域软件测试的"安全密码"&#xff1a;Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力&#xff0c;从金融交易到交通管控&#xff0c;这些关乎国计民生的关键领域…...