当 YashanDB 安装在 Linux 环境中时,为使系统达到更好的性能,建议进行下述配置调整。
Note:
ulimit -c unlimited
# vi /etc/security/limits.conf
# 添加以下信息并保存:
- soft core unlimited
- hard core unlimited
Note: 若部署 YashanDB 共享集群,必须执行本操作。
服务器名称要求如下:
# hostnamectl
2.执行如下命令,可按需设置 hostname。
# hostnamectl set-hostname instance1
使用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 同样生效。
使用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 可查看所有的资源限制值)调整为推荐值或以上,详细信息如下表所示,其中yashan
为规划的数据库安装用户示例(具体用户名需以实际规划为准)。
YashanDB 利用大页内存提高内存访问效率。标准大页内存会在系统启动时预分配,而透明大页会在运行时动态分配大页内存,可能产生运行时错误,造成 YashanDB 被终止。
建议在安装时配置操作系统,启用大页内存,关闭透明大页(Transparent HugePages)选项,YashanDB 服务安装完成后,如需使用大页内存,请修改数据库配置参数USE_LARGE_PAGES为 TRUE 或 ONLY。
Note: 本文仅以适用于大部分 Linux 的操作步骤为例介绍如何配置大页内存,若实际步骤存在差异,建议参考对应操作系统的官方指引或联系系统服务商解决。
如需深入了解大页内存细节,请参考Linux 内核文档 (opens new window)。
1.执行如下命令查看当前大页内存配置:(回显信息以实际为准)
# grep -i huge /proc/meminfo
AnonHugePages: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
HugePages_Free - HugePages_Rsvd
个大页。若 HugePages_Total = 0、HugePages_Free = 0 或 HugePages_Free - HugePages_Rsvd < YashanDB 需求,则需修改系统配置,启用大页内存或增加大页内存池容量。
2.估算大页内存需求,需先估算 YashanDB 的大页内存需求:
根据配置计算 YashanDB 所需内存总量 UserSize,即上述所有配置项的总和(未配置的项目按默认值计算)。如需规划使用 MMS 表空间,还需估计 MMS 表空间所需内存总量 MMSSize。
Caution:
若将所有内存都划归大页管理,可能造成系统无法启动或其他异常,请谨慎使用。
配置时,需确保系统内存容量足以支持大页配置的数值。
3.启用大页内存并根据上述估算值更改相关配置:
本文以大页尺寸 2M、申请 16 个大页(即规划 32M 大页内存)为例,生产环境配置请以实际为准。
编辑/etc/sysctl.conf 文件:
# vi /etc/sysctl.conf
复制代码
Copied!
追加以下配置:
vm.nr_hugepages=16
vm.nr_overcommit_hugepages=0
4.重启系统生效。
# reboot
## 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
,则说明透明大页已开启。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
两种引导的启动文件路径分别为:
/boot/grub2/grub.cfg
/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
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]
。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。