系统资源监控

一、前言

1.1 概念

系统资源监控是指监控服务器的 CPU 使用率、内存使用率、I/O、网络、磁盘空间等的利用情况。通过监控服务器的系统资源使用情况,可以及时了解服务器容量、系统负载和服务器网络速度等,避免出现资源不足等风险,预防因服务器故障导致数据丢失等情况发生。

1.2 工具与术语

系统资源监控中常用的监控工具有:

  • 开源性能监控工具 NOMN(Linux):nmon 是一款计算机性能系统监控工具,具有体积小、安装简单、耗费资源低等特性,广泛应用于 Linux 系统监控。
  • 达梦企业管理器 DEM:DEM 提供一个通过 WEB 界面来监控、管理并维护 DM 数据库的集中式管理平台。

系统资源监控中可能会使用到的相关术语:

  • CPU:中央处理器,是计算机系统的运算核心和控制核心。
  • 内存:也被称为内存储器,用于暂时存放 CPU 中的运算数据,以及与硬盘等外部存储器交换的数据。
  • 磁盘:计算机主要的存储介质,可以存储大量的二进制数据,并且断电后可保持数据不丢失。
  • IO:I/O 输入/输出(Input/Output),分为 IO 设备和 IO 接口两个部分。

1.3 适用范围

本文中所涉及内容适用于 Linux 系统资源监控。

二、CPU 使用率监控

CPU 使用率指设备中的运行程序占用的 CPU 资源,表示所使用的设备在某个时间点运行程序的情况。使用率越高,说明设备在这个时间点所占用 CPU 资源越多,反之则较少。

top 命令可以帮助查看数据库服务器运行概况,记录 CPU 使用信息。查询结果如下图所示:

image.png

top 命令显示结果分为两部分:

第一部分:统计信息,前五行显示系统整体的统计信息。

(1)第一行显示当前系统时间为 19:10:06,up 19min 表示系统连续运行时间为 19 分钟,当前登录用户数为 2,load average 表示系统平均负载,3 个数值分别统计最近一分钟、五分钟、十五分钟的平均进程数量。

(2)第二行显示进程总数为 199 个,正在运行的进程数为 1,睡眠的进程数为 198,停止的进程数为 0,僵尸进程数为 0。

(3)第三行显示 CPU 相关信息,当前用户空间占用 CPU 百分比为 0.3%;内核空间占用 CPU 百分比为 0.3%,用户进程空间内改变过优先级的进程占用 CPU 百分比为 0.0%,空闲 CPU 百分比为 99.3%,等待输入输出的 CPU 时间百分比为 0.0%,CPU 服务于硬件中断所耗费的时间总额为 0.0%,CPU 服务软中断所耗费的时间总额为 0.0%,Steal time 虚拟机被 hypervisor 偷去的 CPU 时间为 0.0。

(4)第四行显示 Mem 内存相关信息,物理内存总量为 3324688kb ,使用的物理内存总量为 303236kb ,空闲内存总量为 1337328kb,用作内核缓存的内存量为 1684124kb 。

(5)第五行显示 Swap 内存相关信息,交换区总量为 3539964kb ,使用的交换区总量为 3539964kb ,空闲交换区总量为 0kb,用作缓冲的交换区总量为 1722220kb 。

第二部分:进程信息,统计信息下方类似表格区域显示的是各个进程的详细信息。默认 5 秒刷新一次。在 top 命令中按 f 按可以查看显示的列信息,按对应字母来开启/关闭列。

例如第二行表示 dmserver 进程信息:进程号 PID 为 1080,启动用户为 dmdba,进程优先级(越小优先级越高)为 20,nice 值(负值表示高优先级,正值表示低优先级)为 0,使用的虚拟内存为 3113996kb,使用的物理内存为 582512kb,使用的共享内存为 17176kb,进程处于休眠状态(S 表示休眠,R 表示正在运行, Z 表示僵死状态,N 表示该进程优先值为负数,I 表示空闲状态),占用的 CPU 使用率为 0.3%,使用的物理内存和总内存的百分比为 17.5%,使用的 CPU 时间总计 0:03.22(单位 1/100 秒),命令行为 dmserver。

三、内存使用率监控

内存使用率为当前使用的内存和全部内存的比值。系统中所有的运行程序都需要内存来执行,如果执行的程序占用内存很大,就有可能导致内存不足,因此需要对内存使用率进行监控。

调用操作系统 free -m 命令,free 命令可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区。一旦发现内存异常,须进行干预处理,及时避免可能发生的 OOM(out of mermory)事件。

free -m 结果如下:

image.png

上图显示结果中各字段含义如下表。一般情况下,物理内存不足会用到交换分区,需要考虑增加物理内存。

Mem total 物理总内存大小
used 已用内存大小
free 可用物理内存大小
shared 共享内存大小
buff/cache 磁盘缓存大小
available 可分配的物理内存大小
Swap total 总交换分区大小
used 已用交换分区大小
free 可用交换分区大小

为避免操作系统内存因大量使用 SWAP 内存而降低数据库性能,在安装部署时需检查设置相关变量来控制系统对 swap 的使用倾向,从而使系统最大发挥内存性能。swappiness 的取值范围为 1~100,当操作系统内存不足时, swappiness 值建议设置为 1;当系统内存足够时,swappiness 推荐设置为 10,以提供操作系统最佳性能。同时也可配合设置 vm.min_free_kbytes 参数限制值。

四、磁盘空间监控

服务器中的磁盘空间至关重要。若不具备足够的磁盘空间,数据库可能无法正常运行。若磁盘损坏,则将导致数据全部丢失。因此需要对磁盘空间进行监控。

磁盘空间监控分为本地磁盘空间监控和共享存储磁盘空间监控,以下分别介绍监控方法。

1. 本地磁盘空间监控

使用命令 df -h 可检查本地磁盘使用情况,如下图所示:

image.png

显示结果中第一行表示的信息如下:

名词 含义
Filesystem 文件系统所处分区
Size 文件系统的容量
Used 已使用的磁盘空间大小
Avail 剩余的磁盘空间大小
Use% 磁盘空间使用率
Mounted on 文件系统的挂载点,即磁盘挂载的目录位置

建议数据、归档、备份放置不同磁盘上,即使其中一块磁盘损坏,其他盘数据可以保障;同时也需要保证各磁盘空间足够,若剩余空间过小,可能会影响数据库的运行和数据的写入。生产环境中,数据目录的磁盘空间应满足业务量增长需求。归档目录设定最大上限后,一般为固定大小空间,应保证归档磁盘空间处于稳定范围内。备份目录空间应当保证至少可容纳下一次备份的空间大小,并满足备份策略。

2. 共享存储磁盘空间监控

共享存储磁盘空间监控常用于达梦数据库共享存储集群(DSC)。在搭建 DSC 集群的过程中,达梦 DSC 集群除了需要一些操作系统层面上的本机磁盘,同时还使用了一些共享存储磁盘。因此需要对共享存储磁盘空间进行监控。

共享存储磁盘空间监控一般重点关注各部分使用率信息,可通过达梦自带的工具 dmasmtool 进行检查,命令如下:

cd $DM_HOME/bin
./dmasmtool /xxxx/dmdcr.ini
ASM>lsdg

结果如下图所示:

total 5 groups......
1  disk_group:
               name: DMDATA
               id: 0
               au_size: 1.00 MB
               extent_size : 4
               total_size: 10.00 GB
               free_size: 6.96GB
               total_file_num: 15
2   disk_group:
               name: DMLOG
               id: 1
               au_size: 1.00 MB
               extent_size : 4
               total_size: 1023.00 MB
               free_size:  500.00 MB
               total_file_num: 5
3   disk_group:
               name: DMARCH
               id: 2
               au_size: 1.00 MB
               extent_size : 4
               total_size: 5.00 GB
               free_size: 3.99GB
               total_file_num: 5
4   disk_group:
               name: VOTE
               id: 125
               au_size: 1.00 MB
               extent_size : 4
               total_size: 200.00 MB
               free_size: 176.00 MB
               total_file_num: 2
5   disk_group:
               name: DCR
               id: 126
               au_size: 1.00 MB
               extent_size : 4
               total_size: 100.00 MB
               free_size: 76.00 MB
               total_file_num: 2
Used time: 7.590(ms).

执行 lsdg 命令后的结果中,主要需关注 total_size 和 free_size 的值。以名为 DMDATA 的磁盘组为例,它的 total_size 为磁盘组总大小,free_size 为磁盘组空闲大小。

生产环境中,可以使用达梦企业管理器 DEM 定期对共享存储使用空间进行监控,并设置告警阀值。当磁盘使用率超过日常设置的阀值时,触发告警,通过短信或邮件通知,便于及时响应处理。同时,也可根据一段时间内的磁盘使用空间监控数据,统计数据增长情况,为后期磁盘扩容提供参考。

五、IO 监控

IO 使用率是指磁盘处理 I/O 的时间百分比,I/O 为 input(输入)/output(输出)的英文缩写,分为 IO 设备和 IO 接口两个部分。过高的使用率通常意味着磁盘 I/O 存在性能瓶颈。

IO 监控可通过两种方法实现:调用操作系统 iostat -xmd 命令或使用 nmon 工具。以下进行详细介绍。

方法一:使用 iostat -xmd 命令,执行结果如下图:

image.png

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

方法二:nmon 工具查看 IO。

执行 ./nmon 进入,按 d 即可实时显示磁盘 IO 情况。

image.png

使用 nmon 工具查看 IO 使用率时,在 nmon 中查看 Busy 列显示的百分比就是磁盘 IO 的繁忙程度。

若当前环境存在 IO 性能测试需求,可参考:磁盘 IO 测试意义及命令

若系统中某磁盘 IO 的 Busy 项接近或为 100% 时,可能存在磁盘 IO 性能下降,需要进行相关问题排查。

六、网络资源监控

在数据库运维过程中还需要对网络资源进行监控和检查,尤其在数据库集群环境中,应用的数据库请求特别依赖于网络资源传输速率。

使用 ethtool 命令可以查看指定网口对应的网络传输速率。

image.png

执行 ethtool eth0 命令后的结果中,主要需关注 Speed 的值。上图中可看出,该系统的 eth0 网卡速率为 1000Mb/s。

若当前系统环境较为复杂,且存在网卡异常或其他原因导致网卡降速运行,则会影响数据库集群之间的网络通信。而当千兆网以百兆网速工作时,则需排查网络降速的原因。

七、系统时间监控

若操作系统时间不正确会导致以下问题:

  1. 若是试用授权产品,则会导致试用授权过期,无法使用。
  2. 集群环境中,若节点时间不一致,将会影响 mal 通信,影响集群数据同步和故障切换功能。
  3. 操作系统时间不正确会引发数据库运行日志、数据库服务日志、归档日志、备份集等时间记录错误,导致相关分析和排查工作难度增大。

使用命令 date 查看服务器节点时间是否与当前时间符合。若时间不一致,可用 root 用户执行如下命令临时修改服务器时间。

##临时修改服务器时间为指定时间
date -s "2022-05-13 10:00:00"

##写入服务器 cmos,防止重启服务器后时间没有更新
clock -w

正式生产环境建议添加 NTP 服务器进行时间同步,确保系统各节点时间保持一致。

八、参考

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

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