Linux 内核参数优化

一、IP 与路由 / VIP 相关

复制代码
# 允许进程绑定不属于本机真实网卡的IP地址上
# 比如可以让进程绑定到VIP 
# 0 开启 1 关闭
net.ipv4.ip_nonlocal_bind = 1

# 开启内核转发,把服务器作为一台路由器使用
# 适用于容器网络,NAT网关,软路由
net.ipv4.ip_forward = 1

二、TCP TIME_WAIT 优化(高并发端口复用)

复制代码
# 允许快速重用 TIME_WAIT 状态的套接字,避免端口长时间等待,提高端口复用率
# 高并发场景必备
# 0 完全关闭,1 开启(只允许传输完数据的 TIME_WAIT 连接重用),2 强制开启(允许在更短时间内重用 TIME_WAIT 状态的端口)
net.ipv4.tcp_tw_reuse = 1

# 关闭 TIME_WAIT 快速回收
# 在linux内核 4.12被移除了
net.ipv4.tcp_tw_recycle = 0 

# 控制系统中TIME_WAIT套接字的最大数量。
# 在高并发场景避免端口被使用完
net.ipv4.tcp_max_tw_buckets=4194304 

# net.ipv4.tcp_fin_timeout   主动关闭连接的超时为30s,快速回收端口
net.ipv4.tcp_fin_timeout = 30	

三、TCP 连接队列与网卡缓冲(高并发核心)

复制代码
# TCP 全连接队列的最大长度,完成3次握手时等待应用程序来取走
# 在高并发场景直接拉满
net.core.somaxconn = 65535

# 网卡连接队列缓冲区,当内核处理TCP 3 次握手来不及时,缓冲在网卡队列里面
# 在高并发场景设当调整
net.core.netdev_max_backlog=100000

四、TCP 缓冲区与端口范围

复制代码
# net.ipv4.tcp_rmem 网卡流量接收缓冲区, net.ipv4.tcp_wmem 网卡发生流量接收缓冲区
# 每条TCP连接最少保证10240KB缓冲区,新建连接默认使用的87380KB缓冲区大小,单条连接最大使用12582912KB缓冲区
net.ipv4.tcp_rmem="10240 87380 12582912"
net.ipv4.tcp_wmem="10240 87380 12582912"

# 设置TCP和UDP的取值范围
net.ipv4.ip_local_port_range="1024 65000"

五、TCP 安全与保活

复制代码
# 防SYN攻击
# 原理是不在将未恢复ACK的客户端连接放到队列中
# 公网服务器必备
net.ipv4.tcp_syncookies = 1

# net.ipv4.tcp_keepalive_time 空闲连接5分钟开始探测,及时清理死连接
net.ipv4.tcp_keepalive_time = 300

六、文件描述符(高并发必备)

复制代码
# 整个系统可以打开的文件描述符的数量 
# 可以通过 sysctl fs.file-max 查看
# 9223372036854775807 是 64 位系统里的理论最大值,相当于 "无限" 级别.
fs.file-max=9223372036854775807

# 定义了每个进程可以打开的文件描述符的最大数量
fs.nr_open=2147483584

七、内存 / 虚拟内存 / 脏页(数据库、大模型

复制代码
# 控制单个进程可以拥有的内存映射区域的最大数量
vm.max_map_count=262144

# vm.dirty_background_ratio 当脏页占内存达到 5% 时,内核后台异步刷盘,不阻塞业务
# vm.dirty_ratio 当脏页占内存达到 15% 时,阻塞新写入,同步强制刷盘
# 适当调整这两个参数可以优化磁盘I/O性能。
vm.dirty_ratio=15
vm.dirty_background_ratio=5

八、共享内存(数据库、缓存、大模型)

复制代码
# 控制单个共享内存段的最大值和系统上可以使用的共享内存的总量。
# 在需要共享内存应用中非常有用,比如数据库,大模型,直接拉满
kernel.shmmax = 18446744073692774399
kernel.shmall = 18446744073692774399

进程 / 线程数限制

复制代码
# 系统最多能分配多大的进程 ID(PID),也间接限制了系统能跑多少个进程。
# 最大只能设置 4194304
kernel.pid_max=4194304

# 定义了进程和线程的总数
# 对于多线程应用程序,适当增加此值以支持更多的线程。
# 一般设置为内存 (GB) × 1 万~1.5 万
kernel.threads-max=27160
相关推荐
WWJA王文举21 分钟前
FreeRTOS事件组和任务通知详解:为什么任务通知比队列更轻量?
开发语言·php
Zixhy35 分钟前
多点巡检机器人项目技术总结
linux·c++·机器人·自动驾驶
M哥支付41 分钟前
快捷支付 VS 网关支付 安全对比
服务器·网络·其他·微信·金融
雯宝1 小时前
7. USB 网络适配器驱动
linux
星恒讯工业路由器1 小时前
房车旅居不“断网”:移动生活如何实现全程在线?
网络·物联网·生活·工业路由器·车载工业路由器·房车通信·双卡备份
rest10241 小时前
使用内存探测bpf
linux
重生之我来学Python2 小时前
Docker套装的简介、安装、超级详细教程
linux·docker·容器·eureka·github
和裕2 小时前
光伏储能定制加强型瓦楞纸箱:降低组件运输隐裂率与售后损耗的核心价值
大数据·运维·网络·人工智能·算法
Ruiery2 小时前
Linux 6.6内核 PCIe 深度解析(十):PCIe Port Driver(portdrv)— 一个物理 Port,拆出五个逻辑服务
linux·运维·服务器
乐维_lwops3 小时前
网管系统:流量分析如何用“五元组”+“TOPN”透视网络异常?
网络·流量分析·网管系统