#操作系统参数调整
# 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的操作步骤为例介绍如何关闭透明大页,若实际步骤存在差异,建议参考对应操作系统的官方指引或联系系统服务商解决。
部分操作系统默认开启了透明大页选项,可执行以下命令确认:
## 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]
,则说明透明大页已关闭。
执行
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"
通过以下指令检查当前系统的引导类型:
# [ -d /sys/firmware/efi ] && echo UEFI || echo BIOS
两种引导的启动文件路径分别为:
- BIOS:
/boot/grub2/grub.cfg
- UEFI:
/boot/efi/EFI/\<distro_name>/grub.cfg
,distro_name
为系统发行版本名称,例如ubuntu
、fedora
、debian
等。
- BIOS:
执行
grub2–mkconfig
指令重新配置grub.cfg
。## BIOS 引导 # grub2-mkconfig -o /boot/grub2/grub.cfg ## UEFI 引导 # grub2-mkconfig -o /boot/efi/EFI/<distro_name>/grub.cfg
重启操作系统,使配置永久生效。
# reboot
验证透明大页已关闭:
## Red Hat Enterprise Linux 内核 # cat /sys/kernel/mm/redhat_transparent_hugepage/enabled ## 其他内核 # cat /sys/kernel/mm/transparent_hugepage/enabled
应显示
always madvise [never]
。