一、前言
1.1 概念
系统资源监控是指监控服务器的 CPU 使用率、内存使用率、I/O、网络、磁盘空间等的利用情况。通过监控服务器的系统资源使用情况,可以及时了解服务器容量、系统负载和服务器网络速度等,避免出现资源不足等风险,预防因服务器故障导致数据丢失等情况发生。
1.2 工具与术语
系统资源监控中常用的监控工具有:
- 开源性能监控工具 NMON(Linux):nmon 是一款计算机性能系统监控工具,具有体积小、安装简单、耗费资源低等特性,广泛应用于 Linux 系统监控。
- 达梦企业管理器 DEM:DEM 提供一个通过 WEB 界面来监控、管理并维护 DM 数据库的集中式管理平台。
系统资源监控中可能会使用到的相关术语:
- CPU:中央处理器,是计算机系统的运算核心和控制核心。
- 内存:也被称为内存储器,用于暂时存放 CPU 中的运算数据,以及与硬盘等外部存储器交换的数据。
- 磁盘:计算机主要的存储介质,可以存储大量的二进制数据,并且断电后可保持数据不丢失。
- IO:I/O 输入/输出(Input/Output),分为 IO 设备和 IO 接口两个部分。
1.3 适用范围
本文中所涉及内容适用于 Linux 系统资源监控。
二、CPU 使用率监控
CPU 使用率指设备中的运行程序占用的 CPU 资源,表示所使用的设备在某个时间点运行程序的情况。使用率越高,通常意味着在特定时间点上,有更多的程序或任务正在占用 CPU 资源进行计算或执行操作。然而,高 CPU 使用率并不一定直接对应机器上运行程序的绝对数量,而更多地反映了 CPU 的工作负载。
top 命令可以帮助查看数据库服务器运行概况,记录 CPU 使用信息。查询结果如下图所示:
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%,虚拟机被 hypervisor 偷去的 CPU 时间为 0.0%。
(4)第四行显示 Mem 内存相关信息,物理内存总量为 3324688kb ,空闲内存总量为 303236kb ,使用的物理内存总量为 1337328kb,用作内核缓存的内存量为 1684124kb 。
(5)第五行显示 Swap 内存相关信息,交换区总量为 3539964kb ,空闲交换区总量为 3539964kb ,使用的交换区总量为 0kb,用作缓冲的交换区总量为 1722220kb 。
第二部分:进程信息,统计信息下方类似表格区域显示的是各个进程的详细信息。默认 5 秒刷新一次。在 top
命令中按 f 键可以查看显示的列信息,上下键选中后按d或者空格键来开启/关闭列。
例如第二行表示 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
结果如下:
上图显示结果中各字段含义如下表。一般情况下,物理内存不足会用到交换分区,需要考虑增加物理内存。
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
可检查本地磁盘使用情况,如下图所示:
显示结果中第一行表示的信息如下:
名词 | 含义 |
Filesystem | 文件系统所处分区 |
Size | 文件系统的容量 |
Used | 已使用的磁盘空间大小 |
Avail | 剩余的磁盘空间大小 |
Use% | 磁盘空间使用率 |
Mounted on | 文件系统的挂载点,即磁盘挂载的目录位置 |
建议数据、归档、备份放置不同磁盘上,即使其中一块磁盘损坏,其他盘数据可以保障;同时也需要保证各磁盘空间足够,若剩余空间过小,可能会影响数据库的运行和数据的写入。生产环境中,数据目录的磁盘空间应满足业务量增长需求。归档目录设定最大上限后,一般为固定大小空间,应保证归档磁盘空间处于稳定范围内。备份目录空间应当保证至少可容纳下一次备份的空间大小,并满足备份策略。
2. 共享存储磁盘空间监控
共享存储磁盘空间监控常用于达梦数据库共享存储集群(DSC)。在搭建 DSC 集群的过程中,达梦 DSC 集群除了需要一些操作系统层面上的本机磁盘,同时还使用了一些共享存储磁盘。因此需要对共享存储磁盘空间进行监控。
共享存储磁盘空间监控一般重点关注各部分使用率信息,可通过达梦自带的工具 dmasmtool 进行检查,命令如下:
cd $DM_HOME/bin
./dmasmtool dcr_ini=/XXX/DSC/dmdcr.ini
ASM>lsdg
结果如下图所示:
执行 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
命令,执行结果如下图:
- 如果 %iowait 的值过高,表示硬盘存在 I/O 瓶颈。
- 如果 %idle 值高,表示 CPU 较空闲。
- 如果 %idle 值高但系统响应慢时,可能是 CPU 等待分配内存,应加大内存容量。
- 如果 %idle 值持续低于 10,表明 CPU 处理能力相对较低,系统中最需要解决的资源是 CPU。
方法二:nmon 工具查看 IO。
执行 ./nmon
进入,按 d 即可实时显示磁盘 IO 情况。
使用 nmon 工具查看 IO 使用率时,在 nmon 中查看 Busy 列显示的百分比就是磁盘 IO 的繁忙程度。
若当前环境存在 IO 性能测试需求,可参考官方文档:磁盘 IO 测试意义及命令
若系统中某磁盘 IO 的 Busy 项接近或为 100% 时,可能存在磁盘 IO 性能下降,需要进行相关问题排查。
六、网络资源监控
在数据库运维过程中还需要对网络资源进行监控和检查,尤其在数据库集群环境中,应用的数据库请求特别依赖于网络资源传输速率。
使用 ethtool
命令可以查看指定网口对应的网络传输速率。
执行 ethtool eth0
命令后的结果中,主要需关注 Speed 的值。上图中可看出,该系统的 eth0 网卡速率为 1000Mb/s。
若当前系统环境较为复杂,且存在网卡异常或其他原因导致网卡降速运行,则会影响数据库集群之间的网络通信。而当千兆网以百兆网速工作时,则需排查网络降速的原因。
七、系统时间监控
若操作系统时间不正确会导致以下问题:
- 若是试用授权产品,则会导致试用授权过期,无法使用。
- 集群环境中,若节点时间不一致,将会影响 mal 通信,影响集群数据同步和故障切换功能。
- 操作系统时间不正确会引发数据库运行日志、数据库服务日志、归档日志、备份集等时间记录错误,导致相关分析和排查工作难度增大。
使用命令 date
查看服务器节点时间是否与当前时间符合。若时间不一致,可用 root 用户执行如下命令临时修改服务器时间。
##临时修改服务器时间为指定时间
date -s "2022-05-13 10:00:00"
##写入服务器 cmos,防止重启服务器后时间没有更新
clock -w
正式生产环境建议添加 NTP 服务器进行时间同步,确保系统各节点时间保持一致。
八、参考
若以上内容无法解决您的问题,可以在 达梦技术社区 提问交流。
官方文档地址
https://eco.dameng.com/document/dm/zh-cn/ops/system-monitor.html