跳到主要内容

配置 sysctl.conf

本文介绍如何通过修改机器的 sysctl.conf 配置,以提高 Linux 系统的性能。

如果您是个人用户,可以跳过此步骤;如果您是企业用户,建议配置 sysctl.conf

更改配置

执行以下命令,打开 /etc/sysctl.conf 配置文件:

sudo vim /etc/sysctl.conf

/etc/sysctl.conf 配置文件中添加以下内容:

# for seekdb
## 修改内核异步 I/O 限制
fs.aio-max-nr = 1048576

## 网络优化
net.core.somaxconn = 2048
net.core.netdev_max_backlog = 10000
net.core.rmem_default = 16777216
net.core.wmem_default = 16777216
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216

net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_slow_start_after_idle=0

vm.swappiness = 0
vm.min_free_kbytes = 2097152
vm.overcommit_memory = 0

fs.file-max = 6573688
fs.pipe-user-pages-soft = 0

# 修改进程可以拥有的虚拟内存区域数量
vm.max_map_count = 655360

# 设置 core 文件的文件名格式以及目录
kernel.core_pattern = /data/core-%e-%p-%t

其中,kernel.core_pattern 中的 /data 为 seekdb 的 data 目录。

提示
  • max_map_count 配置不合理的情况下,可能会导致严重的内存泄露。
  • 至少需要给 core 文件的目录预留和 seekdb 配置的 memory_limit 同等大小的磁盘空间,同时应避免影响到数据目录和日志目录的可用空间。

加载配置

更改配置完成后,执行以下命令,加载配置,使配置生效。

sysctl -p

ARM 环境部署建议

  • bios/uefi 及内核启动参数开启 NUMA 支持。

  • 在 ARM 和海光架构的环境中,建议修改配置文件 /etc/sysctl.conf,将参数 kernel.numa_balancingvm.zone_reclaim_modevm.swappiness 设置为 0,方法如下:

    [root@xxx /]
    $vi /etc/sysctl.conf
    ## 关闭 NUMA Balancing,避免平衡过程中性能发生抖动
    kernel.numa_balancing = 0
    ## 禁用内存回收和重新分配功能
    vm.zone_reclaim_mode = 0
    vm.swappiness = 0

    应用 sysctl.conf 配置文件里的值:

    [root@xxx /]
    $sysctl -p