ITPub博客

首页 > 数据库 > 国内数据库 > YashanDB安装前操作系统参数调整

YashanDB安装前操作系统参数调整

国内数据库 作者:崖山数据库系统YashanDB 时间:2025-03-03 17:19:32 0 删除 编辑

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

Note:

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

  • 在搭建测试环境或实验环境时,为方便问题定位,可以打开生成core文件的开关(使用ulimit -c查看当前状态), 不建议在生产环境中打开此开关以免影响系统效率。具体操作如下:

# ulimit -c unlimited # vi /etc/security/limits.conf# 添加以下信息并保存:
  - soft core unlimited
  - hard core unlimited
Copied!

#设置服务器hostname(共享集群)

Note:

若部署YashanDB共享集群,必须执行本操作。

服务器名称要求如下:

  • 名称由字母、数字以及下划线组成,且必须以字母开头,长度为[4,64]个字符。
  • 同一个YashanDB共享集群中的服务器名称不能相同。
  • 建议每台服务器上只运行一个实例,若一台服务器需运行多个实例则要求将服务器名称设置为[3,63]个字符。
  1. 执行如下命令,可查看hostname。

    # hostnamectl
    Copied!
  2. 执行如下命令,可按需设置hostname。

    # hostnamectl set-hostname instance1
    Copied!

#关闭交换分区

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

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

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

使用 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
Copied!

本操作对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
Copied!

#调整资源限制值

将部分资源限制值(使用ulimit -a可查看所有的资源限制值)调整为推荐值或以上,详细信息如下表所示,其中 yashan为规划的数据库安装用户示例(具体用户名需以实际规划为准)。

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

#配置大页内存

YashanDB利用大页内存提高内存访问效率。标准大页内存会在系统启动时预分配,而透明大页会在运行时动态分配大页内存,可能产生运行时错误,造成YashanDB被终止。

建议在安装时配置操作系统,启用大页内存,关闭透明大页(Transparent HugePages)选项,YashanDB服务安装完成后,如需使用大页内存,请修改数据库配置参数 USE_LARGE_PAGES为TRUE或ONLY。

Note:

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

如需深入了解大页内存细节,请参考 Linux 内核文档   (opens new window)。

#启用大页内存

  1. 执行如下命令查看当前大页内存配置:(回显信息以实际为准)

    # grep -i huge /proc/meminfoAnonHugePages:         0 kB
    HugePages_Total:       0HugePages_Free:        0HugePages_Rsvd:        0HugePages_Surp:        0Hugepagesize:       2048 kB
    Copied!
    • AnonHugePages:当前透明大页使用的内存总量,可参考本文档关闭。
    • HugePages_Total:大页池中页面总数。
    • HugePages_Free:大页池中空闲页面数。
    • HugePages_Rsvd:系统预留(reserved)的页面数。表示应用已申请了对应数量的大页,但由于应用尚未访问这些页面,系统还没有真正从物理内存分配这些页面。应用最多还能申请 HugePages_Free - HugePages_Rsvd个大页。
    • HugePages_Surp:当开启nr_overcommit_hugepages时,系统允许换出一些大页,使得系统支持应用申请超出大页池容量的页面,如果应用频繁访问大页,可能对性能存在负面影响。
    • Hugepagesize:大页的尺寸,不同平台支持的大页尺寸有差异,x86平台支持2M、1G,通常为2M。

    若HugePages_Total = 0、HugePages_Free = 0或HugePages_Free - HugePages_Rsvd < YashanDB需求,则需修改系统配置,启用大页内存或增加大页内存池容量。

  2. 估算大页内存需求,需先估算YashanDB的大页内存需求:

    配置参数 默认值
    DATA_BUFFER_SIZE 32M
    REDO_BUFFER_SIZE 8M
    VM_BUFFER_SIZE 16M
    SHARE_POOL_SIZE 64M
    LARGE_POOL_SIZE 8M
    DBWR_BUFFER_SIZE 4M
    WORK_AREA_POOL_SIZE 16M
    AUDIT_QUEUE_SIZE 16M

    根据配置计算YashanDB所需内存总量UserSize,即上述所有配置项的总和(未配置的项目按默认值计算)。如需规划使用MMS表空间,还需估计MMS表空间所需内存总量MMSSize。

    • YashanDB至少需要大页内存空间LargePageSize = (UserSize + MMSSize + 64M) * 1.2。

    • YashanDB需要的大页内存页面数HugePages = Ceil(LargePageSize / Hugepagesize)。

    Caution:

    若将所有内存都划归大页管理,可能造成系统无法启动或其他异常, 请谨慎使用。

    配置时,需确保系统内存容量足以支持大页配置的数值。

  3. 启用大页内存并根据上述估算值更改相关配置:

    本文以大页尺寸2M、申请16个大页(即规划32M大页内存)为例,生产环境配置请以实际为准。

    编辑/etc/sysctl.conf文件:

    # vi /etc/sysctl.conf
    Copied!

    追加以下配置:

    vm.nr_hugepages=16
    vm.nr_overcommit_hugepages=0
    Copied!
  4. 重启系统生效。

    # reboot
    Copied!

#关闭透明大页

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

    ## Red Hat Enterprise Linux 内核# cat /sys/kernel/mm/redhat_transparent_hugepage/enabled## 其他内核# cat /sys/kernel/mm/transparent_hugepage/enabled
    Copied!
    • 若显示 [always] madvise never或 always [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"
    Copied!
  3. 通过以下指令检查当前系统的引导类型:

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

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

    • BIOS: /boot/grub2/grub.cfg

    • UEFI: /boot/efi/EFI/\<distro_name>/grub.cfg, distro_name为系统发行版本名称,例如 ubuntu、 fedora、 debian等。

  4. 执行 grub2–mkconfig指令重新配置 grub.cfg。

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

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

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

    应显示 always madvise [never]。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70028812/viewspace-3074658/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
崖山数据库系统YashanDB是深圳计算科学研究院完全自主研发设计的新型数据库系统,融入原创理论,支持单机/主备、共享集群、分布式等多种部署方式,覆盖OLTP/HTAP/OLAP交易和分析混合负载场景,为客户提供一站式的企业级融合数据管理解决方案。

注册时间:2023-04-11

  • 博文量
    722
  • 访问量
    640313