#操作系统参数调整
# 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]
,则说明透明大页关闭。
# 关闭透明大页
请
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"
执行
grub2–mkconfig
指令重新配置grub.cfg
。# grub2-mkconfig -o /boot/grub2/grub.cfg
重启操作系统,使配置永久生效。