Linux TCP并发请求溺出 调优
TCP并发请求溺出
调优:系统开启某个监听端口后,当多个TCP请求连接监听端后,会把多个请求交给backlog的默认监听队列由socket server一并处理,backlog有自己的队列长度默认128,当机器处理能力较慢且并发请求值较高时就要考虑对backlog队列进行调优。
注:backlog就是socket的监听队列,当一个请求尚未被处理或建立时,他会进入backlog。
注:socket server可以一次性处理backlog中的所有请求,处理后的请求不再位于监听队列中。当server处理请求较慢,以至于监听队列被填满后,新来的请求会被拒绝。
TCP内核参数修改 调优
修改文件:/etc/sysctl.conf
生效命令:sysctl -p /etc/sysctl.conf
# 用于设置内核无法及时处理网络接口收到的数据包时允许发送到队列的最大数据包数目,默认为128。
net.core.netdev_max_backlog = 32768 # 用来限制监听(LISTEN)队列最大数据包的数量,超过这个数量就会导致链接超时或者触发重传机制
net.core.somaxconn= 32768 # 表示SYN队列的长度,默认值为1024,此处加大队列长度为65535,可以容纳更多等待连接的网络连接数。
net.ipv4.tcp_max_syn_backlog=65535
注:根据机器性能调试并发数调优。
somaxconn与tcp_max_syn_backlog区别
socket接收的所有连接都是存放在队列类型的数据结构中,关键问题是这种队列有两个,而且其长度都是可以设置的。
/proc/sys/net/ipv4/tcp_max_syn_backlog
/proc/sys/net/core/somaxconn
注:tcp_max_syn_backlog是指定所能接受SYN同步包的最大客户端数量,即半连接上限。
注:somaxconn是指服务端所能accept即处理数据的最大客户端数量,即完成连接上限。
- 1、到大厅;tcp_max_syn_backlog用于指定酒席现场面积允许容纳多少人进来;
- 2、找到座位(吃东西,比如糖果、饭菜、酒等)。somaxconn用于指定有多少个座位。
tcp_max_syn_backlog>=somaxconn
答:somaxconn是内核里的参数,listen函数有个参数backlog,如果在listen方法里面指定该参数大于somaxconn的值,重新编译并启动程序,服务端所能接收的完整的连接数上限是backlog呢还是somaxconn?
答案:listen方法指定的backlog是在用户态指定的,内核态的参数优先级高于用户态的参数,所以即使在listen方法里面指定backlog是一个大于somaxconn的值,socket在内核态运行时还会检查一次somaxconn,如果连接数超过somaxconn就会等待。就相当于主人指定了能有多少座位没用,客人到了现场,准备入座时,还要看酒店的客户经理判断能有多少个座位。
Linux TCP并发请求溺出 调优的更多相关文章
- Linux内核 TCP/IP、Socket参数调优
Linux内核 TCP/IP.Socket参数调优 2014-06-06 Harrison.... 阅 9611 转 165 转藏到我的图书馆 微信分享: Doc1: /proc/sy ...
- Linux 系统TCP连接内存大小限制 调优
系统TCP连接内存大小限制 TCP的每一个连接请求,读写都需要占用系统内存资源,可根据系统配置,对TCP连接数,内存大小,限制调优. 查看系统内存资源 记录内存 详情:cat /proc/meminf ...
- jmeter之如何减负-实现稳定超高并发测试(性能调优)之正确添加监听器
jmeter之如何减负-实现稳定超高并发测试(性能调优)在测试过程中,初学者使用工具不当,添加众多监控组件,非常想看到实时报告,跑不了一会,jmeter就卡死,只得重启 下面来总结下如何正确使用jme ...
- Linux内核、 TCP/IP、Socket参数调优
/proc/sys/net目录 所有的TCP/IP参数都位于/proc/sys/net目录下(请注意,对/proc/sys/net目录下内容的修改都是临时的,任何修改在系统重启后都会丢失),例如下面这 ...
- (转)Linux内核 TCP/IP、Socket参数调优
Doc1: /proc/sys/net目录 所有的TCP/IP参数都位于/proc/sys/net目录下(请注意,对/proc/sys/net目录下内容的修改都是临时的,任何修改在系统重启后都会丢失) ...
- Linux内核TCP/IP参数分析与调优
转载于:http://www.itxuexiwang.com/a/liunxjishu/2016/0225/167.html?1456482565 如下图展示的是TCP的三个阶段.1,TCP三次握手. ...
- linux内存基础知识和相关调优方案
内存是计算机中重要的部件之中的一个.它是与CPU进行沟通的桥梁. 计算机中全部程序的执行都是在内存中进行的.因此内存的性能对计算机的影响很大.内存作用是用于临时存放CPU中的运算数据,以及与硬盘等外部 ...
- 高并发场景下JVM调优实践之路
一.背景 2021年2月,收到反馈,视频APP某核心接口高峰期响应慢,影响用户体验. 通过监控发现,接口响应慢主要是P99耗时高引起的,怀疑与该服务的GC有关,该服务典型的一个实例GC表现如下图: 可 ...
- Linux 系统开启随机端口数量 调优
Linux系统随机端口 默认Linux系统开启的随机端口范围为 32768 ~ 65535.客户端连接服务监听端口需要使用到随机端口连接. Linux系统随机端口调优 1.添加内核配置参数:/etc/ ...
随机推荐
- mybatis06--动态sql
1.if标签 public interface StudentDao { /** *动态sql的查询 参数是Student对象 不确定 用户输入几个属性值 */ List<Student> ...
- Spring-Boot自动装载servlet
Spring-Boot自动装载servlet 本人spring-boot相关博客均自己手动编写,但技术均从简书 恒宇少年 处学习,该大佬一直是我的偶像,鉴于能充分理解,所以已做笔记的方式留下这些文档, ...
- Oracle考试题作业
新建一张学员信息表(student),要求:1. 字段如下:学号(sid),姓名(name),性别(sex),年龄(age),地址(address).2. 分别为字段添加约束:学号为主键,姓名为非空, ...
- 用ps怎么修改照片的背景颜色??【申明:来源于网络】
用ps怎么修改照片的背景颜色??[申明:来源于网络] 地址:http://wenda.so.com/q/1361505315060523?src=140
- Python中time模块详解(转)
在平常的代码中,我们常常需要与时间打交道.在Python中,与时间处理有关的模块就包括:time,datetime以及calendar.这篇文章,主要讲解time模块. 在开始之前,首先要说明这几点: ...
- iOS 弹出菜单UIMenuController的基本使用
UIMenuController,弹出菜单@implementation DragView{ CGPoint startLocation; CGFloat rotation;}-(inst ...
- 部署WEB项目到服务器(三)安装mysql到linux服务器(Ubuntu)详解
突发奇想,想在自己电脑上部署一个web网站. 1,首先是下载一个适合自己已安装服务器版本的mysql数据库. 这里使用网上的链接http://dev.mysql.com/downloads/mysql ...
- Spark application注册master机制
直接上Master类的代码: case RegisterApplication(description) => { if (state == RecoveryState.STANDBY) { / ...
- vue 安装cli3.0版本,创建项目
注意:Vue CLI需要Node.js版本8.9或更高版本(建议使用8.11.0+). 查看node版本:node -v , 查看npm 版本 npm -v, 1.首先需要安装node.js环境 ...
- javaweb(2)之Servlet入门
Hello Servlet 方式一 1.新建 web 工程,编写一个类,实现 javax.servlet.Servlet 接口: package com.zze.servlet; import jav ...