#操作系统参数调整

# Linux环境配置调整

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

Note

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

1.关闭交换分区(使用sysctl -a | grep swappiness查看当前状态),COMMAND:

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

2.调整自动分配本地端口范围,下限值建议大于30000,COMMAND:

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

3.调整进程的VMA上限(使用sysctl -a|grep vm.max_map_count查看当前上限值),建议大于2000000,COMMAND:

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

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

资源项 推荐值 COMMAND
open files 1048576 ulimit -n 1048576
vi /etc/security/limits.conf后添加
* soft nofile 1048576
* hard nofile 1048576
max user processes 1048576 ulimit -u 1048576
vi /etc/security/limits.conf后添加
* soft nproc 1048576
* hard nproc 1048576
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

Note

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

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

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

以下为在CentOS中搭建YashanDB单机部署的配置调整示例:

##以下配置涉及到的资源项包括:文件句柄 open files,用户线程数 max user processes,最大内存限制 max memory size,堆栈大小 stack size,交换分区,自动分配本地端口范围。
##ulimit配置参数为临时生效,可通过 ulimit -a 查看系统用户所有限制值;写入/etc/security/limits.conf的参数为永久生效,需要重启生效。

ulimit -n 65536

ulimit -u 65536

ulimit -m unlimited

ulimit -s 8192

echo "

* soft nofile 65536

* hard nofile 65536

* soft nproc 65536

* hard nproc 65536

* soft rss unlimited

* hard rss unlimited

* soft stack 8192

* hard stack 8192

" >> /etc/security/limits.conf

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

echo "net.ipv4.ip_local_port_range = 32768 60999" >> /etc/sysctl.conf

echo "kernel.core_pattern=/sz/asset/soft/core/core.%e.%p" >> /etc/sysctl.conf

sysctl -p

# 配置大页内存

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

# 关闭透明大页

Note:

本文仅以适用于大部分Linux的操作步骤为例介绍如何关闭透明大页,若实际步骤存在差异,建议参考对应操作系统的官方指引或联系系统服务商解决。

  1. 部分操作系统默认开启了透明大页选项,可执行以下命令确认:

    ## Red Hat Enterprise Linux 内核
    # cat /sys/kernel/mm/redhat_transparent_hugepage/enabled
    
    ## 其他内核
    # cat /sys/kernel/mm/transparent_hugepage/enabled
    
    • 若显示[always] madvise neveralways [madvise] never,则说明透明大页已开启。

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

  2. 执行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"
    
  3. 通过以下指令检查当前系统的引导类型:

    # [ -d /sys/firmware/efi ] && echo UEFI || echo BIOS
    

    两种引导的启动文件路径分别为:

    • BIOS:/boot/grub2/grub.cfg
    • UEFI:/boot/efi/EFI/\<distro_name>/grub.cfgdistro_name为系统发行版本名称,例如ubuntufedoradebian等。
  4. 执行grub2–mkconfig指令重新配置grub.cfg

    ## BIOS 引导
    # grub2-mkconfig -o /boot/grub2/grub.cfg
    ## UEFI 引导
    # grub2-mkconfig -o /boot/efi/EFI/<distro_name>/grub.cfg
    
  5. 重启操作系统,使配置永久生效。

    # reboot
    
  6. 验证透明大页已关闭:

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

    应显示always madvise [never]

pdf-btn 下载文档
copy-btn 复制链接