#操作系统参数调整

# Linux环境配置调整

当YashanDB安装在Linux环境中时,为使系统达到更好的性能,建议进行下述配置调整。

Note

1.强烈建议对分布式部署中的所有服务器节点执行下述调整,否则在业务运行将系统资源耗尽的极端场景中,将出现服务退出或业务执行卡顿、报错等异常。

2.在搭建测换环境或实验环境时,为方便问题定位,可以打开生成core文件的开关(使用ulimit -c查看当前状态),COMMAND:

  • ulimit -c unlimited
  • vi /etc/security/limits.conf后添加
    • soft core unlimited
    • hard core unlimited

生产环境不建议打开此开关,避免影响系统效率。

# 关闭交换分区

使用sysctl -a | grep swappiness查看当前状态,建议设为0以减少内存交换,避免影响系统性能。

# sysctl -w vm.swappiness=0
# echo "vm.swappiness = 0">> /etc/sysctl.conf

# 调整自动分配本地端口范围

使用cat /proc/sys/net/ipv4/ip_local_port_range查看连接可用的本地端口范围,下限值建议大于30000以减少端口冲突。

# sysctl -w net.ipv4.ip_local_port_range='32768 60999' 
# echo "net.ipv4.ip_local_port_range = 32768 60999" >> /etc/sysctl.conf

本调整对ipv6同样生效。

# 调整进程的VMA上限

使用sysctl -a|grep vm.max_map_count查看当前上限值,建议大于2000000以增大数据库进程可拥有的VMA大小。

# sysctl -w vm.max_map_count=2000000
# echo "vm.max_map_count=2000000" >> /etc/sysctl.conf 

# 调整资源限制值

将一些内核参数所定义的资源限制值(使用ulimit -a可查看所有的资源限制值)调整为大于或等于最小要求的某个值,具体如下:

资源项 最小要求 COMMAND 资源项说明
open files 65536 ulimit -n 65536
vi /etc/security/limits.conf后添加
* soft nofile 65536
* hard nofile 65536
进程打开的文件数
max user processes 65536 ulimit -u 65536
vi /etc/security/limits.conf后添加
* soft nproc 65536
* hard nproc 65536
最大用户进程数
max memory size unlimited ulimit -m unlimited
vi /etc/security/limits.conf后添加
* soft rss unlimited
* hard rss unlimited
进程最大占用内存值
stack size 8192 ulimit -s 8192
vi /etc/security/limits.conf后添加
* soft stack 8192
* hard stack 8192
进程最大栈空间

# 关闭透明大页

标准大页内存会在系统启动时预分配,而透明大页会在运行时动态分配大页内存,可能产生运行时错误,造成 YashanDB 被终止。我们建议您在安装时,关闭操作系统透明大页(Transparent HugePages)选项。

# 查看透明大页是否开启

在一些系统的内核中默认开启了透明大页选项。您可以通过以下指令确认:

## Red Hat Enterprise Linux 内核
# cat /sys/kernel/mm/redhat_transparent_hugepage/enabled
## 其他内核
# cat /sys/kernel/mm/transparent_hugepage/enabled

若显示[always] madvise never,则说明透明大页开启。

若显示always madvise [never],则说明透明大页关闭。

# 关闭透明大页

  1. vi /etc/default/grub,在 GRUB_CMDLINE_LINUX 中添加或修改参数 transparent_hugepage=never

       GRUB_TIMEOUT=5
       GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
       GRUB_DEFAULT=saved
       GRUB_DISABLE_SUBMENU=true
       GRUB_TERMINAL_OUTPUT="console"
       GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet transparent_hugepage=never"
       GRUB_DISABLE_RECOVERY="true"
    
  2. 执行 grub2–mkconfig 指令重新配置 grub.cfg

    # grub2-mkconfig -o /boot/grub2/grub.cfg
    
  3. 重启操作系统,使配置永久生效。