Linux 内核参数调整提升性能

1次阅读

linux系统出现网络延迟高、内存分配慢或i/o迟滞时,可通过五类内核参数调优:一、tcp参数(如tcp_tw_reuse、somaxconn);二、虚拟内存行为(swappiness、vfs_cache_pressure);三、文件句柄限制(fs.file-max及limits.conf);四、禁用numa平衡;五、按存储类型切换i/o调度器(none/kyber/bfq)。

Linux 内核参数调整提升性能

如果您在运行 Linux 系统时观察到网络延迟偏高、内存分配缓慢或文件 I/O 响应迟滞,则可能是内核默认参数未能适配当前硬件负载与应用场景。以下是几种可直接生效的内核参数调整方法:

一、优化 TCP 网络栈参数

调整 TCP 相关参数可减少连接建立延迟、提升吞吐量并缓解突发流量下的丢包问题,适用于高并发网络服务场景。

1、编辑 /etc/sysctl.conf 文件,添加以下配置行:

2、net.ipv4.tcp_tw_reuse = 1

3、net.ipv4.tcp_fin_timeout = 30

4、net.core.somaxconn = 65535

5、net.ipv4.tcp_max_syn_backlog = 65535

6、执行 sysctl -p 命令使配置立即生效。

二、调整虚拟内存与交换行为

通过控制 swappiness 和 vfs_cache_pressure,可减少不必要的磁盘交换并加快目录项与 inode 缓存回收,适用于内存充足且以计算/存储密集型任务为主的系统。

1、将 vm.swappiness 设为 10,降低内核倾向使用 swap 的概率。

2、将 vm.vfs_cache_pressure 设为 50,减缓 dentry/inode 缓存的回收速度。

3、向 /etc/sysctl.conf 中写入对应键值对。

4、运行 sysctl -p 应用变更。

三、增大文件句柄限制

默认的文件描述符上限可能成为高并发服务(如 nginxredis)的瓶颈,提升该限制可避免“Too many open files”错误。

1、在 /etc/sysctl.conf 中添加:fs.file-max = 2097152

2、执行 sysctl -p 加载新值。

3、同时修改 /etc/security/limits.conf,为指定用户添加:

4、* soft nofile 1048576

5、* hard nofile 1048576

四、禁用 NUMA 平衡开销

在非 NUMA 感知应用或单插槽服务器上,启用 numa_balancing 可能引入额外调度延迟与内存复制开销。

1、临时禁用:echo 0 > /proc/sys/kernel/numa_balancing

2、永久禁用:在 /etc/sysctl.conf 中添加 kernel.numa_balancing = 0

3、确认生效:cat /proc/sys/kernel/numa_balancing 返回 0

五、调优块设备 I/O 调度器

针对不同存储介质(如 NVMe SSD、SATA SSD、HDD),切换合适的 I/O 调度器可显著影响随机读写延迟与吞吐表现。

1、查看当前调度器:cat /sys/block/nvme0n1/queue/scheduler(将 nvme0n1 替换为实际设备名)

2、对 NVMe 设备,设置为 none:echo none > /sys/block/nvme0n1/queue/scheduler

3、对 SATA SSD,设置为 kyber:echo kyber > /sys/block/sda/queue/scheduler

4、对传统 HDD,设置为 bfq:echo bfq > /sys/block/sdb/queue/scheduler

text=ZqhQzanResources