压测Nginx时对Linux内核参数优化,以支持更高的并发

news/2024/7/27 14:30:11/文章来源:https://blog.csdn.net/Stars____/article/details/137249484

文章目录

  • Linux内核参数优化
  • 参数意义解析
  • 注意事项

Linux内核参数优化

编辑/etc/sysctl.conf文件

fs.file-max = 999999
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.ip_local_port_range = 1024  61000
net.ipv4.tcp_rmem = 4096  32768  262142
net.ipv4.tcp_wmem = 4096  32768  262142
net.core.netdev_max_backlog = 8096
net.core.rmem_default = 262144
net.core.wmem_default = 262144
net.core.rmem_max = 2097152
net.core.wmem_max = 2097152
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 1024

保存上述配置并执行 sysctl -p 使其生效。

参数意义解析

  • fs.file-max:单个进程可以同时打开的最大句柄数,这将直接影响最大并发连接数。
  • net.ipv4.tcp_tw_reuse:设置为1,表示允许将TIME-WAIT状态的socket重新用于新的TCP连接。
  • net.ipv4.tcp_keepalive_time:表示当keepalive启用时,TCP发送keepalive消息的频率。默认是2小时。设置小一些可以更快的清理无效的连接。
  • net.ipv4.tcp_fin_timeout:表示当FIN-WAIT-2状态的最大时间。
  • net.ipv4.tcp_max_tw_buckets:表示操作系统允许TIME_WAIT套接字数量的最大值。该参数的默认值是180000。
  • net.ipv4.ip_local_port_range:表示本地使用UDP和TCP端口的取值范围。
  • net.ipv4.tcp_rmem:表示TCP接受缓存的最小值、默认值、最大值。(是一个TCP的recv滑动窗口)
  • net.ipv4.tcp_wmem:表示TCP发送缓存的最小值、默认值、最大值。(是一个TCP的send滑动窗口)
  • net.core.netdev_max_backlog:当网卡接收数据包的速度大于内核处理的速度时,会有一个队列保存这些数据包。该参数表示队列的最大值。
  • net.core.rmem_default:表示内核socket接受缓存区的默认大小。
  • net.core.wmem_default:表示内核socket发送缓存区的默认大小。
  • net.core.rmem_max:表示内核socket接受缓存区的最大大小。
  • net.core.wmem_max:表示内核socket发送缓存区的默认大小。
  • net.ipv4.tcp_syncookies:用于解决TCP的SYN攻击。
  • net.ipv4.tcp_max_syn_backlog:该参数表示TCP三次握手建立连接时接受SYN请求队列的最大长度,默认为1024,若值设置过大可能导致Nginx繁忙来不及accept新的连接。

注意事项

  • 滑动窗口的大小与socket缓存区会在一定程度上影响并发连接数。每个TCP连接都会为维护TCP滑动窗口而消耗内存,这个窗口会根据服务器的处理速度收缩或扩张。
  • 参数net.core.wmem_max的设置,需要平衡物理内存的总大小、Nginx并发处理的最大连接数量确定的。(最大连接数由nginx.conf中的worker_processes和worker_connections参数决定)
  • 提高并发量服务器必然会出现内存不足(out of memory)的问题,此时不建议使用降低滑动窗口大小的方式来缓解内存问题,因为滑动窗口过小会导致大量数据的传输速度变慢。
  • rmem_default、wmem_default、rmem_max、wmem_max这四个参数的设置需要根据业务特性以及实际的硬件成本来综合考虑。

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

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

相关文章

vscode shadertoy插件,非常方便的glsl着色器编写工具

很著名的shadertoy网站,集合了非常多大神利用数学写出美妙的shader效果。像shadertoy创始人之一的IQ大神它在这方面有很多的建树。他的利用光线步进和躁声可以创建很多不可思议的3D场景。 vscode有一件shadertoy的插件,安装后可以新建一个*.glsl文件&am…

vscode调试Unity

文章目录 vscode调试UnityC#环境需求开始调试 Lua添加Debugger环境配置联系.txt文件配置Java环境 添加调试代码断点不生效的问题 vscode调试Unity C# 现在使用vscode调试Unity的C#代码很简单,直接在vscode的EXTENSIONS里面搜索“Unity”,第一个就是&am…

yolov5 v7.0打包exe文件,使用C++调用

cd到yolo5文件夹下 pyinstaller -p 当前路径 -i logo图标 detect.py问题汇总 运行detect.exe找不到default.yaml 这个是yolov8里的文件 1 复制权重文件到exe所在目录。 2 根据报错提示的配置文件路径,把default.yaml复制放到相应的路径下。(缺少相应…

华为昇腾asend

昇腾软硬件技术栈 昇腾Ascend C编程语言 Ascend C原生支持C/C编程规范,通过多层接口抽象、并行编程范式、孪生调试等技术,极大提高了算子的开发效率,帮助AI 参考文章 手把手教你在昇腾平台上搭建PyTorch训练环境 - 哔哩哔哩 (bilibili.com)h…

JAVA版鸿鹄云商B2B2C:解析多商家入驻直播带货商城系统的实现与应用

一、技术选型 java开发语言:java是一种跨平台的编程语言,适用于大型企业级应用开发。使用java开发直播商城可以保证系统的稳定性和可扩展性。 spring boot框架:spring boot是一个快速构建spring应用的框架,简化了开发过程&#xf…

Nginx-LNMP、地址重写

安装nginx [rootproxy ~]# tar -xf nginx-1.24.0.tar.gz [rootproxy ~]# cd nginx-1.24.0/ [rootproxy nginx-1.24.0]# ./configure --prefix/usr/local/nginx --with-http_ssl_module [rootproxy nginx-1.24.0]# make && make install [rootproxy nginx-1.24.0]# ls…

IP证书一年多少钱?

在现如今高度依赖网络通信的时代,网络安全与数据加密的重要性不言而喻。IP证书,作为一种特别类型的SSL/TLS证书,专为公网IP地址设计,旨在为那些直接通过IP地址而非域名访问的网站和服务提供全面的安全保障。以下是关于IP证书的详细…

【深耕 Python】Data Science with Python 数据科学(7)书352页练习题

写在前面 关于数据科学环境的建立,可以参考我的博客: 【深耕 Python】Data Science with Python 数据科学(1)环境搭建 往期数据科学博文: 【深耕 Python】Data Science with Python 数据科学(2&#xf…

pycharm复习

目录 1.基础语法 2.判断语句 3.while循环 4.函数 5.数据容器 1.基础语法 1.字面量 2.注释: 单行注释# 多行注释" " " " " " 3.变量: 变量名 变量值 print:输出多个结果&#x…

【React】react 使用 lazy 懒加载模式的组件写法,外面需要套一层 Loading 的提示加载组件

react 组件按需加载问题解决 1 错误信息2 解决方案 1 错误信息 react 项目在创建 router 路由时&#xff0c;使用 lazy 懒加载时&#xff0c;导致以下报错&#xff1a; The above error occurred in the <Route.Provider> component:Uncaught Error: A component suspe…

链游系统开发运营版丨链游系统开发指南教程

在当今数字经济时代&#xff0c;区块链技术的发展不仅改变了金融行业&#xff0c;也深刻影响了游戏产业。链游系统&#xff08;Blockchain Game System&#xff09;作为区块链技术与游戏行业的结合&#xff0c;正在成为新一代游戏的趋势。本文将为您详细介绍链游系统的开发与运…

Redis配置与优化

目录 引言 一、关系型数据库与非关系型数据库 1、关系型数据库 2、非关系型数据库 3、关系型数据库和非关系型数据库的区别 1.数据存储方式不同 2.扩展方式不同 3.对事物性的支持不同 4、非关系型数据库产生背景 二、Redis简介 1、Redis优点 2、Redis为什么这麽快&…

SSM框架学习——工厂模式、Spring核心容器与Bean

工厂模式、核心容器与Spring Bean 工厂模式 工厂模式是Java中常用的一种设计模式&#xff0c;这种类型的设计模式属于创建型模式。说白了在代码层面就是取消了new的使用。 工厂模式有三种&#xff1a; 简单工厂模式工厂方法模式抽象工厂模式 举个例子&#xff0c;我们去买…

损失函数与激活函数的适配

参考来源&#xff1a; 项目文件预览 - easy-algorithm-interview-and-practice - GitCode

2024 ccfcsp认证打卡 2022 06 01 归一化处理

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int n sc.nextInt(); // 输入数字的个数int[] a new int[1010]; // 创建一个数组来存储输入的数字double sum 0; // 用于计算所有输入数字的总…

智能锁也能用上GPT技术了?大扭力电机更配中国门?这家公司再次引领行业

智能锁也能用上GPT技术了&#xff1f;小小智能锁电机&#xff0c;竟然能拉动2.5吨SUV&#xff1f; 今日&#xff0c;中国智能锁领军品牌德施曼在北京举办「2024德施曼创新技术预沟通会」&#xff0c;德施曼技术研发中心总监桑胜伟揭秘了两项行业突破性技术——GPTfinger及龙霆…

Springboot中的三层架构

我们在进行前后端交互的时候&#xff0c;会分为数据访问&#xff0c;业务逻辑&#xff0c;接受请求并响应数据三个操作&#xff0c;这三部分其实是可以拆分的&#xff0c;让他们解耦&#xff0c;否则代码复用性差并且不易维护&#xff0c;所以诞生了三层架构——1.Dao(数据访问…

LLMs 可能在 2 年内彻底改变金融行业

在艾伦图灵研究所&#xff08;The Alan Turing Institute&#xff09;最新的一项研究中&#xff0c;我们看到了大型语言模型&#xff08;Large Language Models&#xff0c;LLMs&#xff09;的一种可能性。它有望通过检测欺诈行为、生成财务洞察以及自动化客户服务&#xff0c;…

在制定OKR的过程中,应该怎么确定目标O的来源或方向?

在制定OKR&#xff08;Objectives and Key Results&#xff0c;目标与关键成果&#xff09;的过程中&#xff0c;确定目标O的来源或方向是至关重要的一步。一个明确、合理的目标能够为团队指明方向&#xff0c;激发团队成员的积极性和创造力&#xff0c;进而推动公司的整体发展…

Postman中参数填写方式

Postman中参数填写和请求方法有关&#xff0c;一般接口用例请求方法GET与POST常用&#xff0c;所以主要是这两种请求方法请求参数填写 一、GET请求方法参数填写 1、直接在URL中填写请求参数,如直接在URL中填写&#xff1a; http://www.example.com:8089/userapi?unamelisi&…