暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

主机标准化检查项 OceanBase工具学习笔记185

数据库新手 2023-06-05
287

欢迎访问 OceanBase 官网获取更多信息:https://www.oceanbase.com/

检查文件系统类型

文件系统类型支持 EXT4 和 XFS 两种。当磁盘容量 > 16TB 时,检查文件系统类型是否为 XFS 类型,如果类型不符合,建议重新设置磁盘。

检查主机内核参数

检查主机内核参数是否符合要求:

内核参数

默认值范围

描述

net.core.somaxconn

2048 ≤ value ≤ 16384

系统中每一个端口最大的监听队列的长度,这是个全局的参数。

net.core.netdev_max_backlog

500 ≤ value ≤ 10000

在每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。

net.core.rmem_default

65536 ≤ value ≤ 16777216

默认的 TCP 数据接收窗口大小(字节)。

net.core.wmem_default

65536 ≤ value ≤ 16777216

默认的 TCP 数据发送窗口大小(字节)。

net.core.rmem_max

8388608 ≤ value ≤ 16777216

最大的 TCP 数据接收窗口(字节)。

net.core.wmem_max

8388608 ≤ value ≤ 16777216

最大的 TCP 数据发送窗口(字节)。

net.ipv4.conf.default.rp_filter

== 1

定义了网卡对接收到的数据包进行反向路由验证的规则。

 0:关闭反向路由校验;

 1:开启严格的反向路由校验;

 2:开启松散的反向路由校验。</li?

net.ipv4.conf.default.accept_source_route

==0

accept_source_route 指允许数据包的发送者指定数据包的发送路径,以及返回给发送者的数据包所走的路径。br0 为禁用该特性。

net.ipv4.tcp_syncookies

==1

当出现 syn 等候队列出现溢出时向对方发送 syncookies,目的是为了防止 syn flood 攻击。

net.ipv4.tcp_rmem

4096、87380、16777216 三个值分别为 min、default 和 max,分成三项:

 4096 ≤ min ≤ 8192

 65536 ≤ default ≤ 174760

 8388608 ≤ max ≤ 16777216

为自动调优定义 socket 使用的内存。
第一个值是为 socket 接收缓冲区分配的最少字节数;
第二个值是默认值(该值会被 rmem_default 覆盖),缓冲区在系统负载不重的情况下可以增长到这个值;
第三个值是接收缓冲区空间的最大字节数(该值会被 rmem_max 覆盖)。

net.ipv4.tcp_wmem

4096、65536、16777216,分成三项:

 4096 ≤ min ≤ 8192

 65536 ≤ default≤ 131072

 8388608 ≤ max ≤ 16777216。

为自动调优定义 socket 使用的内存。
第一个值是为 socket 发送缓冲区分配的最少字节数;
第二个值是默认值(该值会被 wmem_default 覆盖),缓冲区在系统负载不重的情况下可以增长到这个值;
第三个值是发送缓冲区空间的最大字节数(该值会被 wmem_max 覆盖)。

net.ipv4.tcp_max_syn_backlog

1024 ≤ value ≤ 16384

对于还未获得对方确认的连接请求,可保存在队列中的最大数目。如果服务器经常出现过载,可以尝试增加这个数字。默认为 1024。

net.ipv4.tcp_fin_timeout

15 ≤ value ≤ 60

对于本端断开的 socket 连接,TCP 保持在 FIN-WAIT-2 状态的时间(秒)。对方可能会断开连接,或一直不结束连接,或不可预料地进程死亡。

net.ipv4.tcp_tw_reuse

==1

表示是否允许将处于 TIME-WAIT 状态的 socket(TIME-WAIT 的端口)用于新的 TCP 连接。

net.ipv4.tcp_slow_start_after_idle

==0

TCP 空闲后慢启动,0 为禁止。

vm.swappiness

==0

控制换出运行时内存的相对权重。

vm.min_free_kbytes

32768 ≤ value ≤ 2097152

设置保留的空闲页面池的大小,推荐值 2097152。

vm.max_map_count

327680 ≤ value ≤ 1000000

定义进程可以使用的最大内存映射区域,默认值为 65536。
如果您的应用程序需要更多内存映射区域,请提高这个值,推荐值 655360。

vm.overcommit_memory

==0

定义确定是否接受大型内存请求或拒绝的条件,默认值为 0。

vm.nr_hugepages

==0

nr_hugepages 参数值为 0,表示 HugePages 未启用。

fs.aio-max-nr

≥ 1048576

同时可支持的异步 IO 数目。

kernel.numa_balancing

==0

禁用自动 numa 平衡,避免内存节点数据迁移可能造成的性能抖动。

vm.zone_reclaim_mode

==0

关闭控制内存 Zone 回收模式,可以从其他 Zone 或 NUMA 节点回收内存,避免因回收导致的性能抖动。

fs.file-max

≥ 6573688

整个系统能够打开的最大文件数量,是系统级别的限制,避免默认值过小造成限制。

fs.pipe-user-pages-soft

== 0

由单个非特权用户(即既没有 CAP_SYS_RESOURCE 也没有 CAP_SYS_ADMIN 功能的用户)创建或设置的所有管道的总大小(以页为单位)的软限制。建议设置为 0 ,不应用软限制。

手动修改方式: 以修改 net.core.somaxconn 参数为例,可在自定义配置文件 /etc/sysctl.d/oceanbase.conf 中,通过 echo 的方式将 net.core.somaxconn = 128 写入文件,删除参数则是从文件中把该行配置删除。

检查服务

检查 crond、sshd 及 firewalld 服务。其中,检查 crond 与 sshd 是否为启用状态;检查 firewalld 是否为禁用状态。

服务

说明

crond

建议启用,主要用于设置定时任务,并提供相关运维能力。

sshd

建议启用,主要用于加密登录或者数据传输,并提供基础的运维能力。

firewalld

建议禁用 firewalld 或为 OceanBase 集群各服务添加允许规则,避免防火墙拦截。

手动修改方式:

  • 开启服务:systemctl enable {serviceName} && systemctl start {serviceName}
  • 关闭服务:systemctl stop {serviceName} && systemctl disable {serviceName}

检查透明大页

检查透明大页是否关闭,确保系统性能稳定。

手动修改方式: 通过 echo never > /sys/kernel/mm/transparent_hugepage/enabled 命令设置透明大页配置为 never。同时,如果机器存在重启的情况,为了达到配置持久化效果,建议您在 rc.local 或者 systemd 配置中加入该命令。

检查 python 版本

OceanBase 相关脚本依赖 python 2.7.x,需检查 python 版本以确保相关脚本能够正常运行。

手动修改方式: 通过软件包管理安装 python 2.7,确保执行 python -V 命令返回的版本为 2.7。

检查是否开启了 Swap

检查部署机器是否启用 Swap 分区。建议禁用 Swap 分区,避免性能抖动。

手动修改方式: 执行 swapoff/swapon -a,以及在 /etc/fstab(持久化作用)中删除 Swap 相关条目。

检查命令是否存在

确保 OceanBase 及 OCP 运行、运维依赖的工具包存在。

rpm 包

对应命令

说明

net-tools

netstat、arp、ether-wake、ifconfig、ipmaddr、iptunnel、mii-diag、mii-tool、nameif、plipconfig、route、slattach

检查是否安装了网络相关的命令包,运维依赖命令,建议安装。

mtr

mtr

网络测试工具,运维依赖命令,建议安装。

tar

tar

linux 打包工具,运维依赖命令,建议安装。

binutils

addr2line、ar、as、c++filt、dwp、elfedit、gprof、ld、ld.bfd、ld.gold、nm、objcopy、objdump、ranlib、readelf、size、strings、strip

linux 二进制工具集,运维依赖命令,建议安装。

bind-utils

delv、dig、host、mdig、nslookup、nsupdate

linux DNS 工具集,建议安装。

curl

curl

命令行文本传输工具,运维依赖命令,建议安装。

nc

nc

netcat 网络工具,运维依赖命令,建议安装。

iproute

arpd、bridge、cbq、ctstat、devlink、genl、ifcfg、ifstat、ip、lnstat、nstat、rdma、routef、routel、rtacct、rtmon、rtpr、rtstat、ss、tc

网络管理工具包,运维依赖命令,建议安装。

手动修改方式: 确保网络通畅、相关软件源已配置好,并通过 yum/apt-get/zypper install 等命令安装软件包。

检查 so 文件是否存在

检查如下 so 文件是否存在:

rpm 包

说明

libaio

程序运行依赖包

libatomic

程序运行依赖包

手动修改方式: 确保网络通畅、相关软件源已配置好,并通过 yum/apt-get/zypper install 等命令安装软件包。

检查 admin 用户是否存在

检查目前 OCP 或 OceanBase 相关的服务是否以 admin 用户运行。

手动修复方式: 通过 useradd、groupadd 命令来设置 uid=500、gid=500 的 admin 用户。

检查 SELinux 是否启用

检查系统是否启用 SELinux,SELinux 使用的委任式访问控制 (Mandatory Access Control, MAC),可以针对特定的程序与特定的档案资源来进行权限的控管,建议禁用 SELinux。

手动修复方式: 利用 /usr/sbin/setenforce 命令禁用 selinux(设置为 0),并将 /etc/selinux/config 中的配置修改为 disabled。

检查 ulimit 信息

主要用于限制 shell 启动进程所占用的资源。OBServer 进程涉及的几个限制主要包括线程最大栈空间大小(stack)、最大文件句柄数(open files)和 core 文件大小(core file size)。为避免系统限制对服务造成影响,建议 ulimit 相关项设置为如下目前所需的配置:

root soft nofile 655350

root hard nofile 655350

admin soft nofile 655350

admin hard nofile 655350

admin soft stack 20480

admin hard stack 20480

admin soft nproc 655360

admin hard nproc 655360

admin soft core unlimited

admin hard core unlimited

手动修复方式: 创建 /etc/security/limits.d/99-oceanbase_limits.conf 文件,并将以上配置内容写入文件中,同时确保该文件拥有最高优先级。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论