目录标题
在 Linux 系统中,/proc/sys/ 目录下的内核参数(也称 sysctl 参数)允许我们动态调整内核行为,涉及 内存管理、网络性能、安全控制、文件系统、进程管理等核心系统功能。
以下是最常用、在实际调优和生产环境中经常配置的内核参数,按功能分类,并说明用途、常见设置值及建议:
🧠 1. 内存管理相关(vm.)
| 参数 | 说明 | 常用设置 | 建议 |
|---|---|---|---|
vm.swappiness | 控制系统倾向使用 swap 的程度(0 = 尽量用物理内存) | 10 ~ 20 | 避免频繁 swap |
vm.dirty_ratio | 内存中 dirty page 超过该百分比时触发写盘 | 10 | 减少 write-back 压力 |
vm.dirty_background_ratio | 后台写盘触发阈值 | 5 | 较低可以提升吞吐 |
vm.overcommit_memory | 控制内存分配策略(0/1/2) | 1 | 生产推荐设为 1 |
vm.overcommit_ratio | 与 overcommit=2 配合,定义 swap+RAM 比例 | 50 ~ 80 | 针对大内存主机调优 |
vm.min_free_kbytes | 系统保留空闲内存量 | 适当增大(如 1~2%总内存) | 防止 OOM |
vm.drop_caches | 手动释放 pagecache/slab 缓存(写1/2/3) | - | 用于测试/排障 |
🌐 2. 网络调优相关(net.ipv4.)
📌 TCP 性能与连接数
| 参数 | 说明 | 常用设置 |
|---|---|---|
net.ipv4.tcp_tw_reuse | 允许 TIME_WAIT 套接字被重用 | 1 |
net.ipv4.tcp_tw_recycle | 快速回收 TIME_WAIT(慎用) | 0(建议) |
net.ipv4.tcp_fin_timeout | TCP 连接关闭时等待 FIN_ACK 的秒数 | 15 或更短 |
net.ipv4.ip_local_port_range | 本地可用端口范围 | 1024 65535 |
net.ipv4.tcp_max_syn_backlog | 半连接队列长度 | 8192 或更高 |
net.core.somaxconn | 全连接队列长度(backlog) | 1024 ~ 65535 |
net.ipv4.tcp_syncookies | 启用 SYN Cookie 防 SYN Flood 攻击 | 1 |
📌 网络缓冲区大小(适用于大流量服务)
| 参数 | 说明 | 常用设置 |
|---|---|---|
net.core.rmem_max | 接收缓冲区上限 | 16777216 |
net.core.wmem_max | 发送缓冲区上限 | 16777216 |
net.ipv4.tcp_rmem | TCP 接收缓冲区(最小/默认/最大) | 4096 87380 16777216 |
net.ipv4.tcp_wmem | TCP 发送缓冲区(最小/默认/最大) | 4096 65536 16777216 |
🔐 3. 安全与限制(kernel. fs. 等)
| 参数 | 说明 | 常用设置 |
|---|---|---|
fs.file-max | 系统级最大文件描述符数量 | 1000000 |
fs.nr_open | 单进程最大可打开文件数上限 | 1048576 |
kernel.pid_max | 最大进程 PID 数量 | 4194304 |
kernel.shmmax | 单个共享内存段最大字节数 | 一般设为物理内存一半 |
kernel.shmall | 所有共享内存段总页数 | 内存大小除以页面大小 |
kernel.core_pattern | core dump 文件输出路径 | /var/core/core.%e.%p |
kernel.sysrq | 控制是否允许使用 SysRq 快捷键 | 0(禁用)或按需启用 |
📦 4. 文件系统/IO 相关
| 参数 | 说明 | 常用设置 |
|---|---|---|
fs.aio-max-nr | 支持的最大异步IO请求数量 | 1048576 |
fs.inotify.max_user_instances | 每用户最大 inotify 实例数 | 8192 |
fs.inotify.max_user_watches | 每用户最大监视数量 | 524288 |
fs.inotify.max_queued_events | inotify 事件队列大小 | 16384 |
🚀 5. 应用实践建议
🛠 如何查看参数:
cat /proc/sys/net/ipv4/tcp_fin_timeout
sysctl net.ipv4.tcp_fin_timeout
✏️ 临时修改(立即生效,重启失效):
sysctl -w net.ipv4.tcp_fin_timeout=15
🛠 永久修改方法:
编辑 /etc/sysctl.conf,加入如下内容:
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 15
vm.swappiness = 10
fs.file-max = 1000000
然后执行:
sysctl -p
或针对单项:
sysctl -w key=value
✅ 实战调优组合推荐(高并发 Web 服务场景)
fs.file-max = 1048576
net.core.somaxconn = 65535
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 15
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
vm.swappiness = 10
788

被折叠的 条评论
为什么被折叠?



