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
相关推荐
取经蜗牛3 小时前
Ubuntu 国内镜像源配置指南(多版本常用镜像地址都有)
linux·运维·ubuntu
实心儿儿4 小时前
Linux —— 线程控制(1)
linux·运维·服务器
筠筠喵呜喵5 小时前
Linux软件开发性能优化
linux·c++·性能优化
仰泳之鹅5 小时前
【物联网】使用MQTTX与OneNET云平台进行模拟MQTT协议通信
网络·物联网
Bruce_kaizy5 小时前
c++ linux环境编程——文件io介绍以及open 、write 、read 三剑客深度详解
linux·服务器·c++·ubuntu·操作系统·文件io
亦良Cool5 小时前
VMware虚拟机ubuntu瘦身,解决虚拟机越用越大
linux·运维·ubuntu
星辰&与海7 小时前
KVM + QEMU虚拟化方案
linux·运维
宋浮檀s7 小时前
应急响应——恶意流量&攻击行为识别
linux·运维·网络·网络安全·应急响应
REDcker7 小时前
Linux OverlayFS详解
java·linux·运维
yychen_java7 小时前
6G移动通信:当网络开始“思考”与“感知”
网络·人工智能