注册
达梦数据库安装前操作系统参数配置说明
专栏/技术分享/ 文章详情 /

达梦数据库安装前操作系统参数配置说明

PYZ 2025/04/11 441 1 1
摘要

达梦数据库在实施安装前进行的系统参数修改和参数配置说明如下:

1、关闭SELinux

cat /etc/selinux/config # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=disabled

原因:
SELinux 组件可用来加强系统安全性。在 Linux 中,SELinux 凌驾于 root 权限之上,设置了很多额外的配置项。SELinux 可能不仅没有一些实际性的帮助,反而会带来很多不确定因素。

2、网络监测不低于1000M

ethtool ens32 Speed: 1000Mb/s

原因:
(1)对于单机数据库,主要检测业务网络。业务网络主要作用是应用服务器到数据库服务器连接数据库时,请求数据库进行相应的操作。如果业务网络带宽较低、丢包或延迟较大,会降低应用请求数据库效率。
(2)对于集群,为确保集群的稳定性,原则要求建立并检测单独的心跳局域网络,不低于 1000M 带宽。心跳网络对 MAL 系统的影响较大,如果网络丢包或者延迟较大,则会严重影响 MAL 系统的处理能力,从而导致整个集群出现响应服务请求慢的情况。

3、磁盘调度算法改为deadline

cat /sys/block/sda/queue/scheduler noop [deadline] cfq

原因:
deadline调度算法适用于IO压力比较重,且业务功能单一的场景,比较符合数据库的使用场景。在deadline模式下,数据库运行的性能最好。因此在目前达梦的上线规范中,使用deadline模式为标准配置。建议用户进行调整。

4、关闭swap

swapoff -a free -m total used free shared buff/cache available Mem: 3774 601 1510 8 1662 3088 Swap: 0 0 0

原因:
数据库系统一般都对响应延迟比较敏感,如果内存不足时使用了swap,必然对数据库服务性能产生影响,造成系统响应延迟,甚至系统不可用。

5、关闭numa

cat /etc/default/grub GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet transparent_hugepage=never numa=off" --验证 dmesg |grep -i numa [ 0.000000] NUMA turned off

原因:
NUMA(Non-Uniform Memory Access)架构是为了解决多 CPU 下内存访问冲突,即不再将整个物理内存作为一个整体,而是根据不同的 CPU 区分不同的内存块,当 NUMA 参数 zone_reclaim_mode 设置为 1 时,内核将要求多路 CPU 尽量从距离较近的系统内存节点分配内存,而不是在整个服务器可访问内存的范围内进行内存分配。
因此,在较高内存占用压力下,内存申请会触发内存频繁回收整理的机制,严重影响系统整体性能,进而可能导致 SQL 卡顿问题的发生。

6、禁用透明大页

cat /etc/default/grub GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet transparent_hugepage=never numa=off" --验证 cat /sys/kernel/mm/transparent_hugepage/enabled always madvise [never]

原因:
透明巨页(Transparent Huge Pages)缩写为THP,透明超大页面(THP)在RHEL 6中默认情况下对所有应用程序都是启用的。内核试图尽可能分配巨大的页面,主内核地址空间本身被映射为巨大的页面,减少了内核代码的TLB压力。内核将始终尝试使用巨页来满足内存分配。如果没有可用的巨大页面(例如由于物理连续内存不可用),内核将回退到正常的4KB页面。THP也是可交换的(不像hugetlbfs)。这是通过将大页面分成更小的4KB页面来实现的,然后这些页面被正常地换出。在 khugepaged 进行扫描进程占用内存,并将 4k Page 交换为 Huge Pages 的这个过程中,对于操作的内存的各种分配活动都需要各种内存锁,直接影响程序的内存访问性能,对于专门为 4k page 优化的程序来说,可能会造成随机的性能下降现象。

7、调整sysctl.conf参数

调整项: fs.file-max = 6815744 进程可以同时打开的最大句柄数,这个参数直接限制最大并发连接数。 fs.aio-max-nr = 1048576 限制并发未完成的异步请求数目,应该设置避免I/O子系统故障。 kernel.shmall = 2097152 所有内存大小。共享内存页数的最大值。 kernel.shmmax = 2147483648 定义单个共享内存段的最大值,shmmax设置应足够大,设置的过低可能会导致需要创建多个共享内存段,可能导致系统性能的下降。 kernel.shmmni = 4096 共享内存段的最大数量 kernel.sem = 250 32000 100 128 第一列SEMMSL,表示每个信号集中的最大信号量数目,建议设置为不少于100,第二列SEMMNS,表示系统范围内的最大信号量总数目,第三列SEMOPM,表示每个信号发生时的最大系统操作数目,建议设置为不少于100,第四列SEMMNI,表示系统范围内的最大信号集总数目建议设置为不少于100。 net.ipv4.ip_local_port_range = 9000 65500 ip_local_port_range内核端口范围 net.core.rmem_default = 4194304 接收套接字缓冲区大小的默认值(以字节为单位)。 net.core.rmem_max = 4194304 接收套接字缓冲区大小的最大值(以字节为单位)。 net.core.wmem_default = 262144 发送套接字缓冲区大小的默认值(以字节为单位)。 net.core.wmem_max = 1048576 发送套接字缓冲区大小的最大值(以字节为单位)。 vm.swappiness = 0 控制换出运行时内存的相对权重,参数值大小对如何使用swap分区有很大联系。值越大,表示越积极使用swap分区,越小表示越积极使用物理内存。 vm.dirty_background_ratio = 3 内存可以填充脏数据的百分比。系统后台进程在脏数据达到3%时就开始进行异步清理。 vm.dirty_ratio = 80 脏数据填充的绝对最大系统内存量,配置80%通过允许内存中存在更多脏页,提高缓存对数据库性能,在80%之前系统不会强制同步写磁盘。 vm.dirty_expire_centisecs = 500 指定脏数据在内存中的存活的时间。超过会异步地写到磁盘。 vm.dirty_writeback_centisecs = 100 指定多长时间 pdflush/flush/kdmflush 这些进程会唤醒一次,然后检查是否有缓存需要清理。 vm.overcommit_memory = 0 内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。 vm.numa_stat = 0 设置numa运行时的数据统计,当内存紧张时,可以设置为0来减少统计计数的精度。

8、调整limits.conf参数

cat /etc/security/limits.conf dmdba soft nice 0 dmdba hard nice 0 dmdba soft as unlimited dmdba hard as unlimited dmdba soft fsize unlimited dmdba hard fsize unlimited dmdba soft nproc 131072 dmdba hard nproc 131072 dmdba soft nofile 131072 dmdba hard nofile 131072 dmdba soft core unlimited dmdba hard core unlimited dmdba soft data unlimited dmdba hard data unlimited 调整项: nice:max nice priority allowed to raise to values: [-20, 19] max nice优先级允许提升到值。 as:address space limit (KB) 地址空间限制。 file size:建议设置 unlimited (无限制),此参数过小导致数据库安装或初始化失败。 nproc:max number of processes,最大线程数这个参数建议修改为 10240 以上。 open files:建议设置为 65536 以上或 unlimited。 core file size:建议设置为 unlimited。并将 core 文件目录放到大的空间目录存放。 data seg size:建议设置为 1048576 以上或 unlimited,此参数过小将导致数据库启动失败。

原因:
在 Linux、Solaris、AIX 和 HP-UNIX 等系统中,操作系统默认会对程序使用资源进行限制。如果不取消对应的限制,则数据库的性能和使用将会受到影响。

9、调整system.conf参数

DefaultLimitNOFILE = 65536 DefaultLimitNPROC = 10240

原因:
达梦数据库服务注册为系统服务的进程,如通过 systemctl 或者 service 方式设定随机自启动的数据库服务,其能打开的最大文件描述符、proc 数量等不受 limits.conf 控制,需要修改 /etc/systemd/system.conf 文件。

10、修改REmoveIPC

cat /etc/systemd/logind.conf RemoveIPC=no

原因:
在RHEL7.2及之后,systemd-logind 服务引入了一个新特性,当使用默认值 RemoveIPC=yes 的情况,当用户退出时,操作系统会remove掉该用户的shared memory segments and semaphores。关闭REmoveIPC避免数据库服务异常crash。

11、调整/etc/pam.d/login

调整项: session required /lib64/security/pam_limits.so session required pam_limits.so

原因:要使 limits.conf 文件配置生效,须要确保 pam_limits.so 文件被加入到启动文件中。

12、调整.bash_profile环境变量参数

export DM_HOME="/dm8" export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/dm8/bin" export PATH=$PATH:$DM_HOME/bin:$DM_HOME/tool

原因:
设置dmdba用户运行数据库时所需的动态库和可执行程序。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服