inux内核调优tcp_max_syn_backlog和somaxconn的区别

使用 CFD 仿真进行阀门性能分析:第一部分 了解如何使用 Ansys Discovery 评估阀门性能,使工程师能够设计出更好的产品。 阅读详情

 

The  behavior of the backlog argument on TCP sockets changed with Linux 2.2.  Now it specifies the queue length for completely established sockets waiting
       to be accepted, instead of the number of incomplete connection requests.  The maximum length of  the  queue  for  incomplete  sockets  can  be  set  using
       /proc/sys/net/ipv4/tcp_max_syn_backlog.   When syncookies are enabled there is no logical maximum length and this setting is ignored.  See tcp(7) for more
       information.
       If the backlog argument is greater than the value in /proc/sys/net/core/somaxconn, then it is silently truncated to that value; the default value in  this
       file is 128.  In kernels before 2.4.25, this limit was a hard coded value, SOMAXCONN, with the value 128.

tcp_max_syn_backlog介绍:

socket接收的所有连接都是存放在队列类型的数据结构中,关键问题是这种队列有两个,而且其长度都是可以设置的。
分别是下面两个内核参数:
/proc/sys/net/ipv4/tcp_max_syn_backlog
/proc/sys/net/core/somaxconn
其中:
tcp_max_syn_backlog是指定所能接受SYN同步包的最大客户端数量,即半连接上限;

somaxconn参数介绍:

somaxconn是指服务端所能accept即处理数据的最大客户端数量,即完成连接上限。
对于没有调优的新装的centOS6.5系统,这两个参数的值都是128。
这么描述虽然精确,但是没有一定基础,不熟练网络编程的人理解起来很费劲。

打个简单的比方:

某某发布公告要邀请四海之内若干客人到场参加酒席。客人参加酒席分为两个步骤:

1、到大厅;
2、找到座位(吃东西,比如糖果、饭菜、酒等)。
tcp_max_syn_backlog用于指定酒席现场面积允许容纳多少人进来;
somaxconn用于指定有多少个座位。
显然tcp_max_syn_backlog>=somaxconn。
如果要前来的客人数量超过tcp_max_syn_backlog,那么多出来的人虽然会跟主任见面握手,但是要在门外等候;
如果到大厅的客人数量大于somaxconn,那么多出来的客人就会没有位置坐(必须坐下才能吃东西),只能等待有人吃完有空位了才能吃东西。

那么问题来了:

somaxconn是内核里的参数,listen函数有个参数backlog,如果在listen方法里面指定该参数大于somaxconn的值,重新编译并启动程序,服务端所能接收的完整的连接数上限是backlog呢还是somaxconn?
答案很简单,listen方法指定的backlog是在用户态指定的,内核态的参数优先级高于用户态的参数,所以即使在listen方法里面指定backlog是一个大于somaxconn的值,socket在内核态运行时还会检查一次somaxconn,如果连接数超过somaxconn就会等待。
就相当于主人指定了能有多少座位没用,客人到了现场,准备入座时,还要看酒店的客户经理判断能有多少个座位。

结论:

在没有调优的centOS6.5版本的服务器上,由于受到系统级别的限制,在该服务器上运行的服务端程序,在同一时间,最大只能接受128个客户端发起持久连接,并且只能处理128个客户端的数据通信。

参考文档:
http://www.saunix.cn/1255.html

C#实战:如何用HslCommunication快速搞定三菱FX5U PLC通讯(附完整代码) 本文详细介绍了如何利用HslCommunication库在C#环境中快速实现与三菱FX5U PLC的通讯。通过实战代码演示,从环境搭建、建立连接、核心数据读写到构建健壮的监控服务,系统讲解了如何高效完成数据采集与交互,大幅提升工业自动化项目的开发效率。 阅读详情

相关推荐

LAMMPS+Phonopy计算声子色散曲线

机器学习训练完势函数之后,需要对加以验证。对于晶体而言,色散曲线是其衡量计算是否准确的最重要标准,当然,还有能量,比热,RDF等性质。

qq_68842798的博客 3462

linux内核调优tcp_max_syn_backlog和somaxconn的区别

The behavior of the backlog argument on TCP sockets changed with Linux 2.2. Now it specifies the queue length for completely established sockets waiting to be accepted, instead of the number of incomplete connection requests. The maximum length o

1 Byte 的博客 5265

GD32F103入门实践(一)配置环境,搭建工程模板,烧写程序

写在前面 本系列博客是我初学GD32F103的操作实录,我个人是个小白,在学习过程中真的也遇到了不少坑,因此我希望能记录下来,帮助到同样踩坑的你。 我的芯片是GD32F103ZE,软件是Keil,烧写用的是JLink。 材料准备 首先我在兆易创新官网(兆易创新),下载相关的文件。点击资料下载,在搜索框里输入“GD32F10”可以得到相关的资料,其他芯片类似。比较重要的是GD32F10x AddOn和GD32F10x Firmware Library(固件库),这两个必须下载。 下载Keil MDK5,这

qq_41208487的博客 3万+

观察 Linux 中 tcp_max_syn_backlog 和 somaxconn 参数

在学习TCP时,结合平时情况,想着是什么影响着系统的最大连接数,而linux中tcp_max_syn_backlog和somaxconn参数是每个进程独立设置还是共享一个总参数? 开始准备 tcp_max_syn_backlog参数是控制半连接队列大小,由于暂时不知道怎么样让客户端三次握手的最后一步失败,测试不了半连接队列,暂时测试全连接队列 1.设置全连接队列系统参数 echo1>/proc/sys/net/core/somaxconn sysctl-p c...

a369889186的博客 2436

保姆级教程:用CST 2023一步步复现一个1-8GHz Vivaldi天线(含参数优化与结果分析)

本文提供了一份详细的CST 2023教程,指导读者如何从零开始设计并优化1-8GHz Vivaldi天线。内容涵盖工程设置、参数化建模、仿真加速技巧以及性能优化策略,特别适合需要实现宽带天线设计的工程师和研究人员。通过实战案例,帮助用户掌握Vivaldi天线的核心设计要点和CST高级功能应用。

weixin_30800987的博客 619

通俗地解释一下 EMD(经验模态分解,Empirical Mode Decomposition)

EMD 就像把一碗“混在一起的面条”分成不同粗细的面条,方便你逐层分析每种波动。

qlkaicx的博客 1249

系统调优backlog与tcp_max_syn_backlog和somaxconn

man listen看man怎么说的  The behavior of the backlog argument on TCP sockets changed with Linux 2.2. Now it specifies the queue length for completely established sockets waiting to be accepted, instead

sinat_24820331的博客 7402

LTspice 导入 PSpice 模型实战指南 --(解决语法兼容性与模型优化问题)

本文提供了将PSpice模型成功导入LTspice的详细实战指南。针对两者间的语法兼容性问题,文章以TI UCC23513为例,逐步讲解模型获取、符号创建、常见语法错误修改及仿真验证方法,并分享了模型优化与个人库管理技巧,帮助用户高效解决模型导入与仿真难题。

weixin_28278377的博客 821

Linux参数-net.core.somaxconn与net.ipv4.tcp_max_syn_backlog

1.tcp基础 对于一个TCP连接,Server与Client需要通过三次握手来建立网络连接.当三次握手成功后,我们可以看到端口的状态由LISTEN转变为ESTABLISHED,接着这条链路上就可以开始传送数据了。 对于服务器而言,一个完整的连接建立过程,服务器会经历 2 种 TCP 状态:SYN_REVD, ESTABELLISHED。对应也会维护两个队列: ...

梁海江的博客 8020

COMSOL实现裂缝性储层油水两相流模拟的关键技术

多孔介质中的流体流动模拟是油气藏开发的核心技术,其基本原理基于达西定律和质量守恒方程。在裂缝性储层中,离散裂缝网络与基质系统的耦合流动带来了特殊的数值挑战。通过COMSOL Multiphysics平台实现的多物理场耦合技术,可以精确模拟油水两相在复杂裂缝系统中的渗流行为。该技术采用Level Set方法表征裂缝几何形态,结合自适应网格生成技术解决狭窄裂缝的网格剖分难题,并创新性地引入Bang-Larsen毛管压力滞后模型,显著提高了采收率预测精度。这些方法在致密油藏开发、水驱优化等工程实践中具有重要应用价

weixin_34005090的博客 229

利用李雅普诺夫函数开发航天器姿态控制系统

本文基于李雅普诺夫函数控制方法,采用修正罗德里格斯参数(MRP)描述航天器姿态,设计了姿态控制律。通过构造能量型李雅普诺夫函数,推导出保证系统稳定的控制闭环方程,实现了航天器从初始状态到目标状态的稳定转换。针对MRP参数可能出现的奇异性问题,采用影子集进行规避。仿真实验包含两种模式:非追踪模式(目标状态为0)和追踪模式(目标为三角函数轨迹)。结果表明,该控制方法能够有效实现姿态稳定和轨迹跟踪,在短暂调整后即可精确跟随目标轨迹。控制律设计考虑了不同参考系间的转换,通过DCM矩阵处理目标角速度的坐标变换问题。

weixin_50227659的博客 1221

linux下修改内核参数进行Tcp性能调优 -- 高并发

前言: Tcp/ip协议对网络编程的重要性,进行过网络开发的人员都知道,我们所编写的网络程序除了硬件,结构等限制,通过修改Tcp/ip内核参数也能得到很大的性能提升, 下面就列举一些Tcp/ip内核参数,解释它们的含义并通过修改来它们来优化我们的网络程序。 这里网络程序主要指的是服务器 1. fs.file-max 最大可以打开的文件描述符数量,注意是整个系统。 在服务器

IT小小鸟~~ 2万+

2026 拉勾网:JA4+指纹绕过 + sign逆向 + 动态城市参数,月采集10万+数据实战

2026年拉勾网反爬技术全面升级,采用JA4+ TLS指纹识别、动态sign签名等多维度防护体系。本文提供工业级爬虫解决方案,通过curl_cffi模拟浏览器指纹、逆向sign加密算法、动态生成城市参数三大核心技术,实现高效稳定的数据采集。系统采用分层架构设计,包含任务调度、签名生成、多线程引擎等模块,单月可获取10万+条招聘数据。重点解析了JA4+指纹识别原理、传统方法的局限性,以及通过HMAC-SHA256算法逆向sign参数的完整过程。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2394

Backlog 讨论

TCP3次握手 实际上可分为4步 1 客户端发起connect(),发送SYN j 2 服务器从SYN queue中建立条目,响应SYN k, ACK J+1 3 客户端connect()成功返回,响应ACK K+1 4 服务器将socket从SYN queue移入accept queue,accept()成功返回 注:SYN/FIN各占一个序列号,ACK

xiaolei1982致力于Web开发 3389

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Linux内核Backlog笔记

一。listen方法传入的backlog参数,net.core.somaxconn 这个参数具体意义,先看看Linux Socket的listen解释 man listen #include int listen(int sockfd, int backlog); int类型的backlog参数,listen方法的backlog意义为,已经完成三次握手、已

bytxl的专栏 4092

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

再理解tcp backlog

转载地址:http://lpbobo.com/2016/06/03/%E5%86%8D%E7%90%86%E8%A7%A3tcp-backlog/ 在linux 2.2以前,backlog大小包括了半连接状态和全连接状态两种队列大小。linux 2.2以后,分离为两个backlog来分别限制半连接SYN_RCVD状态的未完成连接队列大小跟全连接ESTABLISHED状态的已完成连接队列大

solariens的博客 6809

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

部分 TCP 内核参数彻底了解

tcp_max_syn_backlog ——————- 端口最大 backlog 内核限制。此参数限制 服务端应用程序 可以设置的端口最大 backlog 值 (对应于端口的 syn_backlog 和 backlog 队列长度)。动机是在内存有限的服务器上限制/避免应用程序配置超大 backlog 值而耗尽内核内存。如果应用程序设置 backlog 大于此值,操作系统将自动将之限制到此值。

realmeh的专栏 1071

TCP内核参数

在Linux系统中,文件、文件和文件都与系统内核参数有关。它们之间的区别主要在于生效时间和持久性。直接修改文件会立即生效,但重启后更改会丢失;而修改文件可以使更改在系统重启后依然生效。

邢宇宇的博客 1880

gnet内核参数调优:somaxconn与tcp_max_syn_backlog设置

在高并发网络场景中,即使使用gnet这样的高性能事件驱动框架,仍可能遭遇"连接建立超时"或"间歇性拒绝连接"等诡异问题。这些现象往往与两个关键内核参数直接相关:`somaxconn`(Socket(套接字)最大连接队列长度)和`tcp_max_syn_backlog`(TCP半连接队列长度)。本文将系统剖析这两个参数的工作机制,提供适用于gnet框架的调优策略,并通过实战案例验证调优效果。 ##...

gitblog_00565的博客 508

backlog:linux系统中的net.core.somaxconn参数

backlog理解及修改配置

jxplus的专栏 1392

内核参数优化之2-1 tcp/ip 标志位报文解析

以下内容纯属虚构,切勿轻易相信! 众所周知,tcp/ip三次握手和四次挥手,均由syn/ack/fin三个标志位报文决定,但是这三个标志位报文,并不是说在构建连接的时候只发送一次的,因为协议不知道网络状况. 故而就存在了以下参数,可以调节发送次数 net.ipv4.tcp_syn_retries 这个参数从字面上来看就是syn标志位报文的重试次数,什么时候发送syn标志位呢...

weixin_34293141的博客 191

cetos sysctl.conf优化参考之一

简单的说明上面的参数的含义: net.ipv4.tcp_syncookies = 1 #表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭; net.ipv4.tcp_tw_reuse = 1 #表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭; net.ipv

三口酥屋 717

backlog配置_redis的tcp-backlog配置

有客户报障,说是连接超时。。。然后查看docker里有队列溢出netstat -s | grep overflowed通过抓取队列溢出的大小,发现每次报障时,实例的队列溢出数都会突增。队列溢出是查看现有连接数是否大于backlog,如果大于就丢弃,并overflow数+1,backlog数是有配置的backlog和系统的somaxconn决定的,ruguo backlog值大于somaxconn,...

weixin_39525617的博客 1925

TCP backlog解析与实战

前言: 针对TCP连接三次握手,我们都已经非常熟悉了。 那么三次握手之后是不是就一定会被服务端处理请求了呢? 可能我们不太清楚操作系统的具体做法,但是凭感觉我们会有两方面的思考: 1)如果大量的客户端连接发送SYN请求,服务器根本无力处置这么多SYN请求,那么怎么做限流操作来避免自己被冲垮呢? 2)三次握手成功之后,服务端处理程序一直在忙于之前的连接的业务处理,长时间没有感知到新的连接到了,那么对于这个客户端发来的请求应该怎么操作呢? 本文就通过对TCP backlog来回答下上述两个问题。

恐龙弟旺仔的博客 3131
上一篇: Linux下解决高并发socket最大连接数所受的各种限制(解除IO限制)
下一篇: Elasticsearch 7.7部署
王树民
博客等级 码龄10年 912粉丝 560原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值