首页 > 数据库 > 国内数据库 > YashanDB安装前操作系统参数调整
当YashanDB安装在Linux环境中时,为使系统达到更好的性能,建议进行下述配置调整。
Note:
建议对分布式部署中的所有服务器执行下述调整,否则在业务运行将系统资源耗尽的极端场景中将出现服务退出或业务执行卡顿、报错等异常。
在搭建测试环境或实验环境时,为方便问题定位,可以打开生成core文件的开关(使用ulimit -c查看当前状态), 不建议在生产环境中打开此开关以免影响系统效率。具体操作如下:
Copied!
Note:
若部署YashanDB共享集群,必须执行本操作。
服务器名称要求如下:
执行如下命令,可查看hostname。
执行如下命令,可按需设置hostname。
使用
sysctl -a | grep swappiness查看当前状态,建议设置为0以减少内存交换,避免影响系统性能。
使用
cat /proc/sys/net/ipv4/ip_local_port_range查看连接可用的本地端口范围,下限值建议大于30000以减少端口冲突。
本操作对IPv6同样生效。
使用
sysctl -a|grep vm.max_map_count查看当前上限值,建议大于2000000以增大数据库进程可拥有的VMA大小。
将部分资源限制值(使用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 内核文档 。
执行如下命令查看当前大页内存配置:(回显信息以实际为准)
HugePages_Free - HugePages_Rsvd个大页。若HugePages_Total = 0、HugePages_Free = 0或HugePages_Free - HugePages_Rsvd < YashanDB需求,则需修改系统配置,启用大页内存或增加大页内存池容量。
估算大页内存需求,需先估算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:
若将所有内存都划归大页管理,可能造成系统无法启动或其他异常, 请谨慎使用。
配置时,需确保系统内存容量足以支持大页配置的数值。
启用大页内存并根据上述估算值更改相关配置:
本文以大页尺寸2M、申请16个大页(即规划32M大页内存)为例,生产环境配置请以实际为准。
编辑/etc/sysctl.conf文件:
追加以下配置:
重启系统生效。
部分操作系统默认开启了透明大页选项,可执行以下命令确认:
若显示
[always] madvise never或
always [madvise] never,则说明透明大页已开启。
若显示
always madvise [never],则说明透明大页已关闭。
执行
vi /etc/default/grub,在
GRUB_CMDLINE_LINUX中添加或修改参数
transparent_hugepage=never。
通过以下指令检查当前系统的引导类型:
两种引导的启动文件路径分别为:
BIOS:
/boot/grub2/grub.cfg
UEFI:
/boot/efi/EFI/\<distro_name>/grub.cfg,
distro_name为系统发行版本名称,例如
ubuntu、
fedora、
debian等。
执行
grub2–mkconfig指令重新配置
grub.cfg。
重启操作系统,使配置生效。
验证透明大页已关闭:
应显示
always madvise [never]。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70028812/viewspace-3074658/ ,如需转载,请注明出处,否则将追究法律责任。