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
相关推荐
Safeploy安策数据2 小时前
以数字身份认证为盾,为企业数字化转型筑牢安全屏障
网络·安全
Harvy_没救了2 小时前
Ansible 学习指南
linux·运维·服务器·ansible
lhbian2 小时前
30分钟搭建PHP+Java全栈Web应用
java·前端·php
有谁看见我的剑了?2 小时前
Linux 内存巨页与透明巨页学习
java·linux·学习
@insist1232 小时前
网络工程师-网络规划与设计(四):网络故障排查思路与工具全解
网络·网络工程师·软考·软件水平考试
blog.pytool.com2 小时前
Ubuntu + VSCODE +aarch64 +qt +qmake +clangd
linux·qt·ubuntu
其实防守也摸鱼2 小时前
ctfshow--VIP题目限免(包含原理和知识拓展)前10个
网络·算法·安全·学习笔记·ctf·泄露·web类型
学Linux的语莫2 小时前
Linux环境中anaconda 的安装与环境配置
linux·运维·服务器
yutian06062 小时前
CCS:Code Composer Studio 在线调试设置仅擦除必要Flash或全片擦除
php·composer