系统健康检查

一、前言

1.1 概念

系统健康检查主要包括检查系统主机配置、操作系统参数配置、磁盘状态和操作系统资源利用率。通过系统健康检查,可以了解系统当前的运行状况,及时发现系统存在的隐患和运行风险。

1.2 术语

  • Core:又称之为 Core Dump 文件,是 Unix/Linux 操作系统的一种机制。出现 core 文件意味着服务暂时停止,需要恢复。并且出现 core 文件的进程的内存空间越大,core 文件生成的时间越长。
  • CPU:中央处理器,是计算机系统的运算核心和控制核心。
  • 磁盘:计算机主要的存储介质,可以存储大量的二进制数据,并且断电后可保持数据不丢失。
  • IO:I/O 输入/输出(Input/Output),分为 IO 设备和 IO 接口两个部分。
  • SELinux(security enhanced linux):全称为安全增强型 Linux 系统,它是一个 linux 内核模块,也是 Linux 的一个安全子系统。Selinux 的主要作用就是最大限度地减小系统中服务进程可访问的资源(最小权限原则)。

1.3 适用范围

本文中所涉及内容适用于 Linux 系统健康状态检查。

二、系统配置检查

本章节将针对安装 DM 数据库的服务器主机配置提出检查项建议。在集群环境中,为保证集群的高可用和高并发,建议集群中的各个主机的配置都相同,保障集群稳定、高效运行。

2.1 服务器网卡检查

服务器必须至少有一个网卡,使用 ifconfig 命令可查看网卡情况。集群环境建议有两块网卡,一块接入内部网络交换模块,一块接入到外部交换机。

单机、主备集群、MPP 集群、读写分离集群要求网卡是千兆网卡以上,DMDSC 集群建议是万兆网卡。若带宽过低,会影响数据传输和集群 mal 通信。可用 ethtool 命令查询及设置网卡参数,显示结果如下图所示:

image.png

  • Supported link modes 为网卡支持的连接模式。
  • speed 和 duplex 字段为当前网络速率和模式。

2.2 防火墙及 selinux 检查

2.2.1 防火墙检查

Linux 下防火墙的检查可根据实际情况来进行,不同的操作系统可能关闭防火墙的命令有所区别。这里简单介绍 redhat 6 与 redhat 7 操作系统的防火墙关闭方法。

1. redhat 6 操作系统

(1)切换到 root 用户,检查防火墙状态。

[root@localhost dmdba]#service iptables status

(2)若防火墙开启,检查数据库端口策略。

[root@localhost dmdba]#iptables -L -n

image.png

(3)若防火墙已开启且未设有端口策略,则关闭防火墙。

[root@localhost dmdba]#service iptables status
[root@localhost dmdba]#chkconfig iptables off

2. redhat 7 操作系统

(1)切换到 root 用户,检查防火墙状态。

[root@localhost dmdba]#systemctl status firewalld

(2)若防火墙开启,检查数据库端口策略。

[root@localhost dmdba]#firewall-cmd --list-all

image.png

(3)若防火墙已开启且未设有端口策略,关闭防火墙。

##防止 Linux 防火墙影响数据库的运行,设置开机禁用防火墙并关闭防火墙。
[root@localhost dmdba]#systemctl disable firewalld
[root@localhost dmdba]#systemctl stop firewalld

2.2.2 selinux 检查

生产环境需要关闭 selinux(即 selinux 状态需要设置为 disabled),以防止 Linux 自带的安全策略影响数据库的运行。使用 root 用户执行以下命令:

[root@localhost dmdba]#set enforce 0
[root@localhost dmdba]#vim /etc/selinux/config 
##设置 selinux 状态为关闭
SELINUX=disabled

##修改后,保存退出
注意

修改 SELinux 永久关闭,必须重启服务器,才能生效。且永久关闭后,不能通过 setenforce 1 命令临时打开。

更多详细内容可参考:防火墙、SELinux 检查

2.3 CPU 型号及核数检查

使用命令 cat /proc/cpuinfo 可检查 CPU 情况,建议使用 Pentium 4 1.6GHz 以上处理器,若 CPU 配置过低,可能会影响数据库运行和应用性能。

image.png

2.4 内存检查

使用命令 free -m 可检查内存情况,建议使用 512 MB 以上内存,若剩余空闲内存过低,可能会影响数据库的运行和应用性能。

2.5 磁盘空间检查

使用命令 df -h 可检查磁盘情况,建议数据、归档、备份放置不同盘上,即使其中一块盘损坏,但其他盘数据不会因此受到影响;同时,也需要保证磁盘空间足够。若剩余空间过小,可能会影响数据库的运行和数据的写入。

2.6 服务器时间检查

date 命令可查看服务器节点时间是否与当前时间符合。集群环境下,若节点时间不一致,则会影响 mal 链接,影响集群数据同步。

##查看当前服务器时间
[root@localhost dmdba]# date 
##若时间不一致,可用 root 用户 date -s 命令修改服务器时间。
[root@localhost dmdba]# date -s 修改时间 
建议

生产环境建议添加 NTP 服务器进行时间同步。

2.7 系统资源限制

登录数据库运行用户,执行 ulimit -a,列出系统所有资源限制的值。

[root@localhost dmdba]# ulimit -a

显示结果如下:

core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 14949
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 65536
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 16384
cpu time               (seconds, -t) unlimited
max user processes              (-u) 14949
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

由以上显示结果中需要特别关注以下参数:

  • data seg size:建议用户设置为 1048576(即 1 GB)以上或 unlimited(无限制),此参数过小将可能导致数据库启动失败。
  • file size:建议用户设置为 unlimited(无限制),此参数过小将可能导致数据库安装或初始化失败。
  • open files:建议用户设置为 65536 以上或 unlimited(无限制)。
  • virtual memory:建议用户设置为 1048576(即 1 GB)以上或 unlimited(无限制),此参数过小将可能导致数据库启动失败。

若需修改以上配置,可登录 root 修改 /etc/security/limits.conf 配置文件,步骤如下:

[root@localhost dmdba]# vim /etc/security/limits.conf

##添加以下内容
End of file
dmdba   hard  nofile   65536
dmdba   soft   nofile    65536
dmdba   hard  nproc   65535
dmdba   soft   nproc    65535
dmdba   hard   stack   8192
dmdba   soft   stack    8192

2.8 Core 文件设置

core 文件即内存的映像,当程序崩溃时便会产生 core 文件,又称为 core dump 文件,默认生成位置与可执行程序位于同一目录下,文件名为 “core.***”。core 文件存储内存的相应信息,主要用于对程序进行调试。

2.8.1 查看及修改 core 文件大小

  1. 查看 core 文件大小。
[root@localhost dmdba]# ulimit -c
  • 若显示结果为 0,则表示不记录 core 文件。
  • 若显示结果为非零数字,则表示最大 coredump 文件大小。
  • 若显示结果为 unlimited,则表示 core 文件的 size 无限制。
  1. 修改 core 文件大小。

(1)临时修改

[root@localhost dmdba]#ulimit -c fileSize   
##表示限制 core 文件生成大小
##例如:ulimit -c unlimited   表示不限制生成的 core 文件大小

(2)永久修改

修改 limit 配置,即登录 root 修改 /etc/security/limits.conf 。

[root@localhost dmdba]# vim /etc/security/limits.conf

##添加以下内容
dmdba   hard  core   unlimited
dmdba   soft   core    unlimited

##永久修改,需要重启服务器才生效
[root@localhost ~]# reboot

程序崩溃时生成 core 文件大小即为程序运行时占用的内存大小。当应用发生堆栈溢出的时候,可能占用很大的内存,导致生成的 core 文件较大,尽量将 core 文件大小设置大一些。

2.8.2 查看及修改 core 默认生成路径

  1. 一般情况下,core 文件是默认生成到当前运行程序的同目录下。若需查看 core 文件默认生成路径,输入以下命令。
[root@localhost dmdba]# cat /proc/sys/kernel/core_pattern

为了正常生成 core 文件,建议放置到空间充足的磁盘中,建议不与数据文件放在同一目录下。

  1. 修改 core 文件默认路径。
##登录 root 用户
##通过以下命令指定 core 文件生成路径
[root@localhost dmdba]# echo "/corefile/core-%e-%p-%t" 
> /proc/sys/kernel/core_pattern

可以将 core 文件统一生成到 /corefile 目录下,产生的文件名为 “core-命令名-pid-时间戳”。文件即时生效,无需重启操作系统。

2.9 磁盘调度算法

  1. 查看 sda 盘调度算法命令。
[root@localhost dmdba]cat /sys/block/sda/queue/scheduler
##数据库服务器建议使用 deadline io 调度算法
  1. 修改磁盘调度算法。

(1)临时修改

[root@localhost dmdba]echo deadline > /sys/block/sda/queue/scheduler

(2)永久修改

##修改内核引导参数,加入 elevator= 调度程序名
[root@localhost ~]# grubby --update-kernel=ALL --args="elevator=deadline"
##永久修改,需要重启服务器才生效
[root@localhost ~]# reboot

三、磁盘状态检查

3.1 数据库目录及磁盘空间检查

DM 数据库目录,一共分为数据库软件安装目录、数据文件目录、归档目录、备份目录。为了数据安全保障,建议将数据文件目录、归档文件目录、备份文件目录分别挂载在不同的磁盘上,以免其中一块盘损坏,数据全部丢失。

数据文件目录、归档目录、软件安装目录建议至少预留 15% 的磁盘可用空间,备份目录建议至少预留保存两个备份周期的磁盘空间。

若需查看磁盘使用情况,可以通过以下命令进行查看:

[root@localhost dmdba]df  -h

3.2 磁盘读写检查

临时磁盘读写检查需要在磁盘空间充足的环境下进行。正常运行的生产环境谨慎进行磁盘读写检查,以免影响业务正常运行。检查步骤可参考以下内容:

  1. 写入测试:
[root@localhost dmdba]dd if=/dev/zero of=test bs=64k count=4k oflag=dsync

正常写速度:机械磁盘在 50 MB/s~90 MB/s,固态硬盘在 150 MB/s-300 MB/s。

image.png

  1. 读取测试:
[root@localhost dmdba]dd if=test of=/dev/zero bs=64k count=4k oflag=dsync

image.png

四、操作系统资源利用率检查

4.1 CPU 占用率

使用命令 top 或通过 nmon 工具可以查看数据库进程 cpu 使用率及 cpu 总体使用率。更多内容可以参考系统资源监控

[root@localhost dmdba]top

image.png

  • %id:空闲 CPU 百分比,若该值很低,则需要检查 CPU 具体被哪个进程占用,是否存在瓶颈。
  • %us:用户空间占用 CPU 百分比。

4.2 内存使用率

使用命令 free -m 或通过 nmon 工具可以查看显当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区。主要需要关注 buffer/cache 和 free 内存。更多内容可以参考系统资源监控

若结果显示中的 swap 可用过少,服务器内存使用可能存在问题。可以使用 cat /proc/sys/vm/swappiness 命令查看物理内存和交换区交换的频率。Swappiness 的值越低,内核会尽可能避免交换,反之则意味着内核将频繁使用交换空间。建议将该参数修改为 60%。

4.3 磁盘 I/O 速率

磁盘 I/O 速率可使用以下命令或 nmon 工具进行查询,需要关注结果显示中的 CPU 使用率及读写率。

[root@localhost dmdba]iostat -xm -t 1 

image.png

  • 如果 %iowait 的值过高,表示硬盘存在 I/O 瓶颈。
  • 如果 %idle 值高,表示 CPU 较空闲。
  • 如果 %idle 值高但系统响应慢时,可能是 CPU 等待分配内存,应加大内存容量。
  • 如果 %idle 值持续低于 10,表明 CPU 处理能力相对较低,则需要提高 CPU 处理能力。

五、参考

若以上内容无法解决您的问题,可以在 达梦技术社区 提问交流。

微信扫码
分享文档
扫一扫
联系客服