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

文章目录

  • 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.mzph.cn/news/786093.shtml

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

相关文章

如何提高图片的分辨率?dpi修改工具推荐

在调整分辨率之前,我们需要了解什么是dpi分辨率,简单来说,分辨率是指图像中包含的像素数量,分辨率越高,图像就越清晰,常见的分辨率包括72dpi、96dpi和300dpi等,在打印照片或者一些考试平台对图片…

02-JDK新特性-泛型

泛型 什么是泛型 泛型是JDK5中引入的特性,它提供了编译时类型安全检测机制,该机制允许在编译是检测到非法的类型。 它的本质是参数化类型,也就是说操作的数据类型被指定为一个参数。 也就是将类型有原来的具体类型参数化,然后在…

【CVE复现计划】CVE-2023-27179

CVE-2023-27179 简介: GDidees CMS v3.9.1及更低版本被发现存在本地文件泄露漏洞,漏洞通过位于 /_admin/imgdownload.php 的 filename 参数进行利用。 影响版本: GDidees CMS v3.9.1及更低版本 POC: /_admin/imgdownload.php?filename/fla…

2024蓝桥杯每日一题(树形DP)

备战2024年蓝桥杯 -- 每日一题 Python大学A组 试题一:病毒溯源 试题二:没有上司的舞会 试题三:生命之树 试题一:病毒溯源 【题目描述】 病毒容易发生变异。某种病毒可以通过突变产生若干变异的毒株,而…

MATLAB 自定义中值滤波(54)

MATLAB 自定义中值滤波(54) 一、算法介绍二、算法实现1.原理2.代码一、算法介绍 中值滤波,是一种常见的点云平滑算法,改善原始点云的数据质量问题,MATLAB自带的工具似乎不太友好,这里提供自定义实现的点云中值滤波算法,具体效果如下所示: 中值滤波前: 中值滤波后:…

前端性能优化-Table渲染速度优化

教务系统-排课页面性能优化总结 一、前言 在公司教务系统中,排课页面慢的令人发指,在某些情况由于数据量大导致页面主进程卡死,遂组织进行一次排查优化,现记录一下 二、效果对比 以下数据均为UAT环境 Performence对比 更改前: 主进程渲染时间为 8s 教务系统-排课页面性…

Ubuntu安装elasticsearch

Ubuntu系统上安装Elasticsearch可以通过多种方式进行,以下是几种常用的安装方法。在开始安装前,请确保你的系统是最新的,这可以通过运行sudo apt update和sudo apt upgrade命令来完成。 方法一:使用APT仓库安装(推荐&…

【日常积累】指定ruby版本环境安装

背景说明 在redis的5.0版本之前,使用redis提供的redis-trib创建redis集群时还需要依赖ruby环境。当然有时候我们自已也需要安装指定ruby版本环境。下面是安装时的大致过程,以及过程中遇到的问题解决。我使用的环境是centos7,小版本差别应该不…

std::exit功能介绍和析构函数调用

std::exit函数调用后,系统会终止当前执行的程序(无论主线程还是子线程调用,该程序都会被终止),在终止之前会有一些清理步骤会被执行: 静态存储对象(静态的或者全局的)会被析构&#…

MHA的实验部署

一、前期准备 准备四台虚拟机,一台主服务器,一台管理服务器,两台从服务器 在开始之前先要关闭所有服务器的防火墙,以免有一些麻烦 二、实际操作 2.1 配置主服务器 2.2 配置从服务器1和2 2.3 给主从服务器实现软链接 2.4 配置mysql…

Docker学习指南

前言 亲爱的读者们,欢迎来到这篇专为“小白”打造的 Docker 学习博客。作为一名运维工程师,我深知初学者在面对 Docker 这样的技术时可能会遇到的困惑与挑战。因此,本文将以浅显易懂的语言、详实的步骤和实用的示例,带领大家从零…

TypseScript再学习之类型别名和接口(10)

先看类型别名:使用关键字 type 声明,注意有等于号额 // 类型别名 使用关键字 type 声明,注意有等于号额 type Cat {name: string; }; let huahua: Cat {name: "花花", };type和interface不同之处在于:interface 是可以自动合并类型的&#…

【单片机 5.3开关检测】

文章目录 前言一、5.3开关检测1.1没按键按下的1.2有按键按下的 二、改进1.改进 三、独立键盘3.1为什么要取反3.2 实用的按键 总结 前言 提示:这里可以添加本文要记录的大概内容: 课程需要: 提示:以下是本篇文章正文内容&#xf…

春暖助学 梦想启航

(通讯员:赵灿飞 图:杨美、孙红浪) 春风拂面暖阳斜,爱心助学谱华章。为弘扬中华民族传统美德,动员社会力量,传播社会爱心,缓解宁乡西部特殊家庭学子学业面临的实际困难&#xff…

CorePoolExecutor夺命连环问?看你可以接受几招?

一、前言 今天我在看why技术的时候,看到了这个。发现这个没有全部的八股回答?于是我就结合自己的经验,分享下八股 二、八股问答 2.1了解JDK Executors线程池吗? Executor就是一个线程池框架,在开发中如果需要创建线程可优先考…

JMeter自定义日志与日志分析

1 JMeter日志概览 JMeter与Java程序一样,会记录事件日志,日志文件保存在bin目录中,名称为jmeter.log。当然,我们也可以在面板中直接察看日志,点击右上角黄色标志物可以打开日志面板,再次点击收起。 可见&…

从入门到实战:vue3路由知识点

本人在B站上关于vue3的尚硅谷的课程,以下是整理一些笔记。 1.两个知识点 1.路由组件通常存放在pages 或 views文件夹,一般组件通常存放在components文件夹。 组件可以分为: 1. 一般组件:亲手写标签出来的 2. 路由组件&#…

非关系型数据库——Redis配置与优化

目录 一、关系型数据库和非关系型数据库 1.定义 1.1关系型数据库 1.2非关系型数据库 2.非关系型数据库产生的背景 3.关系型数据库和非关系型数据库区别 3.1适用性不同 3.2数据一致性要求不同 3.3数据模型不同 3.4数据查询语言不同 3.5数据存储方式不同 3.6扩展方式…

PHP获取亚马逊商品详情api接口

亚马逊提供了一个名为Product Advertising API(PA API)的接口,可以用来获取亚马逊商品的详细信息。 要使用PA API,您需要进行以下几个步骤: 注册为亚马逊合作伙伴,并创建一个亚马逊开发人员账户。创建一个…