2019独角兽企业重金招聘Python工程师标准>>>

怎样才能快速的定位到并发高是由于磁盘io开销大呢?可以通过三种方式:

Top可以看到的cpu信息有:

  Tasks: 29 total, 1 running, 28 sleeping, 0 stopped, 0 zombie

  Cpu(s): 0.3% us, 1.0% sy, 0.0% ni, 98.7% id, 0.0% wa, 0.0% hi, 0.0% si

  具体的解释如下:

  Tasks: 29 total 进程总数

  1 running 正在运行的进程数

  28 sleeping 睡眠的进程数

  0 stopped 停止的进程数

  0 zombie 僵尸进程数

  Cpu(s):

  0.3% us 用户空间占用CPU百分比

  1.0% sy 内核空间占用CPU百分比

  0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比

  98.7% id 空闲CPU百分比

  0.0% wa 等待输入输出的CPU时间百分比

  0.0% hi

  0.0% si

  0.0% wa 的百分比可以大致的体现出当前的磁盘io请求是否频繁。如果 wa的数量比较大,说明等待输入输出的的io比较多。

Unix/Linux 磁盘 I/O 性能监控命令

1.小文件读写的磁盘性能瓶颈是寻址(随机读写性能更差)评估标准:TPS
2.大文件读写的磁盘性能瓶颈是贷款,评估标准是持续的读写速度
3.Linux有一个特性是可以用空闲的内存作为Cache,因此大的内存可以很有效的提高存储系统性能.

磁盘 I/O 性能监控指标和调优方法

在介绍磁盘 I/O 监控命令前,我们需要了解磁盘 I/O 性能监控的指标,以及每个指标的所揭示的磁盘某方面的性能。磁盘 I/O 性能监控的指标主要包括:

指标 1:每秒 I/O 数(IOPS 或 tps)

对于磁盘来说,一次磁盘的连续读或者连续写称为一次磁盘 I/O, 磁盘的 IOPS 就是每秒磁盘连续读次数和连续写次数之和。当传输小块不连续数据时,该指标有重要参考意义。

指标 2:吞吐量(Throughput)

指硬盘传输数据流的速度,传输数据为读出数据和写入数据的和。其单位一般为 Kbps, MB/s 等。当传输大块不连续数据的数据,该指标有重要参考作用。

指标 3:平均 I/O 数据尺寸

平均 I/O 数据尺寸为吞吐量除以 I/O 数目,该指标对揭示磁盘使用模式有重要意义。一般来说,如果平均 I/O 数据尺寸小于 32K,可认为磁盘使用模式以随机存取为主;如果平均每次 I/O 数据尺寸大于 32K,可认为磁盘使用模式以顺序存取为主。

指标 4:磁盘活动时间百分比(Utilization)

磁盘处于活动时间的百分比,即磁盘利用率,磁盘在数据传输和处理命令(如寻道)处于活动状态。磁盘利用率与资源争用程度成正比,与性能成反比。也就是说磁盘利用率越高,资源争用就越严重,性能也就越差,响应时间就越长。一般来说,如果磁盘利用率超过 70%,应用进程将花费较长的时间等待 I/O 完成,因为绝大多数进程在等待过程中将被阻塞或休眠。

指标 5:服务时间(Service Time)

指磁盘读或写操作执行的时间,包括寻道,旋转时延,和数据传输等时间。其大小一般和磁盘性能有关,CPU/ 内存的负荷也会对其有影响,请求过多也会间接导致服务时间的增加。如果该值持续超过 20ms,一般可考虑会对上层应用产生影响。

指标 6:I/O 等待队列长度(Queue Length)

指待处理的 I/O 请求的数目,如果 I/O 请求压力持续超出磁盘处理能力,该值将增加。如果单块磁盘的队列长度持续超过 2,一般认为该磁盘存在 I/O 性能问题。需要注意的是,如果该磁盘为磁盘阵列虚拟的逻辑驱动器,需要再将该值除以组成这个逻辑驱动器的实际物理磁盘数目,以获得平均单块硬盘的 I/O 等待队列长度。

指标 7:等待时间(Wait Time)

指磁盘读或写操作等待执行的时间,即在队列中排队的时间。如果 I/O 请求持续超出磁盘处理能力,意味着来不及处理的 I/O 请求不得不在队列中等待较长时间。

通过监控以上指标,并将这些指标数值与历史数据,经验数据以及磁盘标称值对比,必要时结合 CPU、内存、交换分区的使用状况,不难发现磁盘 I/O 潜在或已经出现的问题。但如果避免和解决这些问题呢?这就需要利用到磁盘 I/O 性能优化方面的知识和技术。限于本文主题和篇幅,仅列出一些常用的优化方法供读者参考:

  1. 调整数据布局,尽量将 I/O 请求较合理的分配到所有物理磁盘中。
  2. 对于 RAID 磁盘阵列,尽量使应用程序 I/O 等于条带尺寸或者为条带尺寸的倍数。并选取合适的 RAID 方式,如 RAID10,RAID5。
  3. 增大磁盘驱动程序的队列深度,但不要超过磁盘的处理能力,否则,部分 I/O 请求会因为丢失而重新发出,这将降低性能。
  4. 应用缓存技术减少应用存取磁盘的次数,缓存技术可应用在文件系统级别或者应用程序级别。
  5. 由于多数数据库中已包括经优化后的缓存技术,数据库 I/O 宜直接存取原始磁盘分区(raw partition)或者利用绕过文件系统缓存的 DIO 技术(direct IO)
  6. 利用内存读写带宽远比直接磁盘 I/O 操作性能优越的特点,将频繁访问的文件或数据置于内存中。

磁盘 I/O 性能监控命令简介

Unix/Linux 提供了两个非常有用的用于磁盘 I/O 性能监控的命令:iostat 和 sar。

iostat 命令主要通过观察物理磁盘的活动时间以及他们的平均传输速度,监控系统输入 / 输出设备负载。根据 iostat 命令产生的报告,用户可确定一个系统配置是否平衡,并据此在物理磁盘与适配器之间更好地平衡输入 / 输出负载。iostat 工具的主要目的是通过监控磁盘的利用率,而探测到系统中的 I/O 瓶颈。不同操作系统命令格式输出格式略有不同,管理员可以通过查看用户手册来确定它的用法。

sar 命令报告 CPU 的使用情况,I/O 以及其它系统行为。sar 命令可以收集,报告以及保存系统行为信息。以这种方式收集到的数据对于确定系统的时间周期特征和决定峰值使用时间是很有用的。但要注意的是,sar 命令自己运行时会产生相当数量的读写,因此最好在没有工作量的情况下运行 sar 统计,看看 sar 对总的统计数字有多大的影响。

AIX 环境下,iostat 和 sar 位于文件集 bos.acct 中,是基本系统 (Base Operating System) 的一部分,在缺省安装情况下无需进行任何配置或任何额外包安装。

Linux 环境下,iostat 和 sar 包含在 sysstat 包中。sysstat 是 Linux 系统中的常用工具包。不同的 Linux 系统或不同的硬件平台,安装包名字和具体命令可能会有微小差异。清单1为一个在 RHEL5.3 上安装 sysstat 包的例子。

清单1:在 RHEL5.3 上安装 sysstat 包
# rpm -ivh sysstat-7.0.2-3.el5.ppc.rpm warning: sysstat-7.0.2-3.el5.ppc.rpm: Header V3 DSA signature: NOKEY, key ID 37017186 Preparing...             #################################### [100%] 1:sysstat              #################################### [100%]

在 AIX 系统上监控磁盘 I/O 状况

清单 2 与清单 3 是在一个负载较重的 AIX 节点上运行 iostat 和 sar 的执行结果,每个命令时间间隔设定为 10 秒,总共执行3次。

清单 2:在 AIX6.1 系统上利用 iostat 查看磁盘 I/O 负载
# iostat -d 10 3 System configuration: lcpu=32 drives=226 paths=2 vdisks=0 Disks:    % tm_act     Kbps       tps      Kb_read    Kb_wrtn hdisk1        51.6     1582.8      25.6       2208     13632 hdisk2        14.6     6958.5       7.1          0     69637 hdisk3        94.2     40013.8      73.3       9795    390643 hdisk1        61.2     2096.9      33.9       4176     16844 hdisk2        20.1     9424.0      10.0         32     94438 hdisk3        97.2     39928.3      73.8      25112    375144 hdisk1        63.5     2098.6      34.7       4216     16796 hdisk2        27.1     13549.5      13.6       8352    127308 hdisk3        98.4     40263.8      81.2      27665    375464

主要字段含义如下:

% tm_act 表示物理磁盘处于活动状态的时间百分比,即磁盘利用率。

Kbps 表示以 KB 每秒为单位的传输(读或写)到驱动器的数据量。

Tps 表示每秒物理磁盘的 I/O 次数。

Kb_read 在设定时间间隔内读取的数据量,以 KB 为单位。

Kb_wrtn 在设定时间间隔内写入的数据量,以 KB 为单位。

清单 3: 在 AIX6.1 系统上使用 sar – d 报告磁盘 I/O 信息
# sar -d 10 3 AIX node001 1 6 00CAA4CC4C00    08/19/09 System configuration: lcpu=32 drives=226  mode=Capped 04:34:43 device     %busy   avque   r+w/s   Kbs/s   avwait   avserv 04:34:53 hdisk1     52      0.0       26     1645      0.0     28.3 hdisk2     18      0.0        8     8614      0.4     73.5 hdisk3     92      0.1       72    38773     28.5    105.1 04:35:03 hdisk1     62      0.0       34     2133      0.0     30.7 hdisk2     20      0.0       10     9855      0.4     84.2 hdisk3     98      0.1       74    39975     24.4    115.7 04:35:13 hdisk1     62      0.0       33     2019      0.0     32.5 hdisk2     23      0.0       11    11898      0.4     67.4 hdisk3     97      0.0       80    40287     13.7     97.4 Average  hdisk1     58      0.0       31     1932      0.0     30.5 hdisk2     20      0.0        9    10122      0.4     75.0 hdisk3     95      0.1       75    39678     22.2    106.1

输出的主要字段含义如下:

%busy 处理 I/O 请求所占用的时间,以百分比表示。

avque 在指定的时间间隔没有完成的请求数量的平均值。

r+w/s 每秒 I/O 读写总数。

Kbs/s 每秒字节数,以 KB 为单位。

avwait 传送请求等待队列空闲的平均时间,以毫秒为单位。

avserv 完成 I/O 请求所需平均时间,以毫秒为单位。

本例显示 hdisk1 的利用率居中,每秒 I/O 数居中,但吞吐量最小;hdisk2 的利用率最小,每秒 I/O 数最小,但吞吐量比 hdisk1 高;hdisk3 I/O 利用率最大,每秒 I/O 数和吞吐量也最大,I/O 平均等待时间最长,服务时间也最长。hdisk1 的平均 I/O 尺寸为 1932/31= 62 KB;hdisk2 的平均 I/O 尺寸为 10122/9= 1125 KB;hdisk3 的平均 I/O 尺寸为 39678/75= 529 KB。从中可见,小块随机存取对每秒 I/O 数影响较大,大块顺序读取对吞吐量影响较大。hdisk3 利用率超过 70% 警戒线,虽然其平均 I/O 尺寸比 hdisk2 小约一半,但服务时间却比 hdisk2 增加约 30%,同时等待时间也较长,应该对其采取管理措施。

在 Linux 系统上监控磁盘 I/O 状况

清单 4 与清单 5 是在一个负载较轻的 Linux 节点上 iostat 和 sar 的执行结果,时间间隔设定为 10 秒,总共执行 3 次。

清单 4:在 RHEL5.3 系统上利用 iostat 查看磁盘 I/O 负载
# iostat -d -x 10 3 Linux 2.6.18-128.el5 (node002.ibm.com)       08/19/2009 Device:  rrqm/s  wrqm/s  r/s  w/s  rsec/s  wsec/s avgrq-sz avgqu-sz  await  svctm  %util sda      0.10   22.12  0.14  2.06   12.98   286.60   136.58   0.19   87.17   3.76   0.82 sda1     0.00   0.00   0.00  0.00    0.00    0.00    75.06    0.00    3.89   3.14   0.00 sda2     0.00   0.00    0.00  0.00   0.02    0.00    53.56    0.00   13.28  11.67   0.00 sda3     0.09   22.12   0.14  2.06   12.94   286.60   136.59  0.19   87.19   3.76   0.82 Device:  rrqm/s  wrqm/s  r/s  w/s  rsec/s  wsec/s avgrq-sz avgqu-sz  await  svctm  %util sda      0.00   6.40  0.00  1.20     0.00    91.20    76.00   0.01    7.25   5.08   0.61 sda1     0.00   0.00  0.00  0.00     0.00     0.00     0.00   0.00    0.00   0.00   0.00 sda2     0.00   0.00  0.00  0.00     0.00     0.00     0.00   0.00    0.00   0.00   0.00 sda3     0.00   6.40  0.00  1.20     0.00    91.20    76.00   0.01    7.25   5.08   0.61 Device:  rrqm/s  wrqm/s  r/s  w/s  rsec/s  wsec/s avgrq-sz avgqu-sz  await  svctm  %util sda      0.00   3.30  0.00  5.40   0.00   100.00    18.52     0.45   83.24   3.63   1.96 sda1     0.00   0.00  0.00  0.00   0.00     0.00     0.00     0.00    0.00   0.00   0.00 sda2     0.00   0.00  0.00  0.00   0.00     0.00     0.00     0.00    0.00   0.00   0.00 sda3     0.00   3.30  0.00  5.40   0.00   100.00    18.52     0.45   83.24   3.63   1.96

主要字段含义如下:

r/s 每秒读操作数。

w/s 每秒写操作数。

rsec/s 每秒从设备读取的扇区数量。

wsec/s 每秒向设备写入的扇区数量。

avgrq-sz I/O 请求的平均扇区数。

avgqu-sz I/O 请求的平均队列长度。

await I/O 请求的平均等待时间,单位为毫秒。

svctm I/O 请求的平均服务时间,单位为毫秒。

%util 处理 I/O 请求所占用的时间的百分比,即设备利用率。

清单 5:在 RHEL5.3 系统上利用 sar 报告磁盘 I/O 信息
#sar -pd 10 3 Linux 2.6.18-128.el5 (node002.ibm.com)       08/19/2009 04:13:48 AM   DEV    tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz   await   svctm   %util 04:13:58 AM   sda    1.20   0.00     91.11     76.00      0.01     7.25   5.08      0.61 04:13:58 AM   sda1   0.00   0.00    0.00      0.00       0.00     0.00   0.00      0.00 04:13:58 AM   sda2   0.00   0.00    0.00      0.00       0.00     0.00    0.00     0.00 04:13:58 AM   sda3   1.20   0.00     91.11     76.00      0.01    7.25      5.08    0.61 04:13:58 AM   DEV  tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz   await   svctm   %util 04:14:08 AM   sda   5.41  0.00    100.10     18.52      0.45     83.24    3.63    1.96 04:14:08 AM   sda1   0.00  0.00    0.00      0.00      0.00      0.00    0.00     0.00 04:14:08 AM   sda2   0.00  0.00    0.00      0.00      0.00      0.00    0.00     0.00 04:14:08 AM   sda3   5.41  0.00    100.10     18.52    0.45     83.24    3.63      1.96 04:14:08 AM   DEV   tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz  await   svctm    %util 04:14:18 AM    sda   0.60  0.00   74.47    124.00       0.00     7.50     6.33     0.38 04:14:18 AM    sda1  0.00  0.00  0.00      0.00      0.00      0.00      0.00      0.00 04:14:18 AM    sda2  0.00   0.00  0.00     0.00      0.00      0.00      0.00      0.00 04:14:18 AM    sda3  0.60   0.00  74.47    124.00     0.00      7.50      6.33      0.38 Average:  DEV  tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util Average:  sda   2.40   0.00     88.56     36.89      0.15     64.26      4.10      0.98 Average:  sda1  0.00   0.00      0.00      0.00      0.00      0.00      0.00      0.00 Average:  sda2  0.00   0.00      0.00      0.00      0.00      0.00      0.00      0.00 Average:  sda3  2.40   0.00     88.56     36.89      0.15     64.26      4.10      0.98

输出的主要字段含义如下:

DEV 正在监视的块设备

tps 每秒钟物理设备的 I/O 传输总量

rd_sec/s 每秒从设备读取的扇区数量

wr_sec/s 每秒向设备写入的扇区数量

avgrq-sz I/O 请求的平均扇区数

avgqu-sz I/O 请求的平均队列长度

await I/O 请求的平均等待时间,单位为毫秒

svctm I/O 请求的平均服务时间,单位为毫秒

%util I/O 请求所占用的时间的百分比,即设备利用率

本例可见磁盘 sda 的 I/O 操作较少,仅分区 sda3 存在 I/O 操作,且利用率低于 1%,平均 I/O 尺寸为 0.15 * 512 = 77B,I/O 操作以小块写入为主。本例中未发现异常输出,不需对磁盘采取管理措施。

回页首

Unix/Linux 系统磁盘 I/O 性能监控自动化脚本示例

前文介绍了 AIX 与 Linux 磁盘 I/O 监控的手段,本节将结合实例介绍磁盘 I/O 监控的自动化脚本的设计和实现。

设计思路

1 . 监控指标

前文介绍了多个监控指标,比如吞吐量,每秒 I/O 数,平均单次 I/O 响应时间,磁盘利用率等,用户可以根据自身系统和应用的特点选取监控指标。下文将以磁盘利用率为例进行监控脚本的设计。

2 .监控手段

对于 AIX, 命令“iostat -d”的输出字段“% tm_act”反映磁盘利用率;对于 Linux, 命令“iostat -d -x”的输出字段“%util”反映磁盘利用率。监控的频次可以通过“iostat”命令本身的参数指定。

3. 告警机制

一般来说,如果磁盘使用率长时间达到 75% 或 80%, 通常会视为磁盘较忙,一般需进行调整磁盘布局,调整应用使用分配等管理活动,如果磁盘使用率偶尔较高,只需要继续监视即可。因此告警既不能对于偶发现象频繁告警,也不能放过持续时间较长的现象,本例的告警机制设定为“在一定时间间隔内的一定比例的监控记录超出设定的磁盘利用率门限值即告警”

4 .日志

要保留磁盘 I/O,分析活动,告警信息等原始信息,便于以后进行问题分析,定位。

磁盘 I/O 分析和告警自动脚本

结合上文设计思路,笔者开发了磁盘 I/O 分析和告警脚本 I/OAnalyzer.sh, 我们的脚本在 RHEL 5.3、SLES 11、AIX 5.3 和 AIX 6.1 上测试通过。

脚本 IOAnalyzer.sh 的第一部分先进行了初始化,检验并处理输入参数,对未输入的参数指定默认值。

清单 6. IOAnalyzer.sh 脚本初始化部分
#!/bin/sh # ================================================================ # Script Name:  IOAnalyzer.sh # Desciption:   To analyze output of 'iostat -d', send an alert to admin #              if disk utilization counter reach defined threshold # Date:         May 19, 2009 #================================================================ # ----------------------------------------------------------------- # Function definitions...                                定义函数#---------------------------------------------------------------- function usage { echo ""echo "usage: IOAnalyzer.sh -i inIostatFile [ -l outLogFile ] \ [ -a outAlertFile ] [ -u dishUtil ] [ -r rateGEUtil ]"echo ""echo "For example: IOAnalyzer.sh -i /tmp/iostat.out -l /tmp/logFile \ -a /tmp/aletFile -u 80 -r 70"echo "For AIX, please run 'iostat -d [ <interval> [ <count> ] \ to create inIostatFile"echo "For Linux, please run 'iostat -d -x [ <interval> [ <count> ] \ to create inIostatFile"exit 1 } # ---------------------------------------------------------------- # Process command-line arguments                         命令行参数处理# ---------------------------------------------------------------- while getopts :i:l:a:u:r: opt do case "$opt" in i) inIostatFile="$OPTARG";; l) outLogFile="$OPTARG";; a) outAlertFile="$OPTARG";; u) diskUtil="$OPTARG";; r) rateGEUtil="$OPTARG";; \?) usage;; esac done #---------------------------------------------------------------- # Input validation                                    输入验证#---------------------------------------------------------------- if [ ! -f "$inIostatFile" ] then echo "error: invalid Augument inIostatFile in OPTION -i "usage exit 1 fi #--------------------------------------------------------------- # Set values, if unset                                   设置变量# ---------------------------------------------------------------- outLogFile=${outLogFile:-${inIostatFile}.log} outAlertFile=${outAlertFile:-${inIostatFile}.alert} diskUtil=${diskUtil:-'80'} rateGEUtil=${rateGEUtil:-'60'}

接下来, IOAnalyzer.sh 脚本查询日志,通过计算起止行的办法定位 IO 输出文件的待分析文本。

清单 7. IOAnalyzer.sh 脚本定位 I/O 输出文件待分析部分
# ---------------------------------------------------------------- # Identify the lines to be analyzed between StartLine and Endline # 定位日志中待分析文本# ---------------------------------------------------------------- if [ ! -f "$outLogFile" ] || [ ! tail -1 "$outLogFile"|grep 'ENDLINE'] then StartLineNum=1; else CompletedLine=`tail -1 "$outLogFile" | grep 'ENDLINE' | \ awk '{print $4}'|cut -d: -f2` StartLineNum=`expr 1 + $CompletedLine` fi eval "sed -n '${StartLineNum},\$p' $inIostatFile" > ${inIostatFile}.tail LineCount=`cat ${inIostatFile}.tail|wc -l|awk '{print $1}'` EndLineNum=`expr $LineCount + $StartLineNum`

清单 7 中的脚本实现了按行分析上文定位的 iostat 输出,如果某行磁盘利用率小于先前定义的门限值,则在行尾标记“OK”,如果某行磁盘利用率大于等于先前定义的门限值,则在行尾标记“Alarm”。并且脚本中对于 AIX 和 Linux 输出格式和磁盘命名的不同作了相应处理。

清单 8. IOAnalyzer.sh 按行分析 iostat 输出
# ---------------------------------------------------------------- # Analyze 'iostat' output, append "Alarm" or "OK" at the end of each# line # ---------------------------------------------------------------- OS=`uname` case "$OS" in AIX) diskUtilLabel="% tm_act"diskUtilCol=2 diskPrefix="hdisk";; Linux) diskUtilLabel="%util"diskUtilCol=14 diskPrefix="hd|sd";; *)      echo "not support $OS operating system!"exit 1; ;; esac eval "cat ${inIostatFile}.tail | egrep '${diskPrefix}' \ | awk '{if ( \$${diskUtilCol} * 100 < ${diskUtil} ) \ {\$20 = \"OK\"; print \$1\"\t\"\$${diskUtilCol}\"\t\"\$20 } \ else {\$20 = \"Alarm\"; print \$1\"\t\"\$${diskUtilCol}\"\t\"\$20 } }'" \ > ${outLogFile}.tmp

下文脚本给出一个告警触发的例子,如果过高的磁盘利用率计数占总分析行数的比率达到或超出预定的比率,脚本会给 root 用户发一封告警邮件。

清单 9. IOAnalyzer.sh 触发告警
# ---------------------------------------------------------------- # Send admin an alert if disk utilization counter reach defined # threshold # ---------------------------------------------------------------- Alert="NO"for DISK in `cut -f1  ${outLogFile}.tmp | sort -u` do numAlarm=`cat ${outLogFile}.tmp | grep "^$DISK.*Alarm$" |wc -l` numRecord=`cat ${outLogFile}.tmp | grep "^$DISK" |wc -l` rateAlarm=`expr $numAlarm \* 100 / $numRecord` if [ $rateAlarm -ge $rateGEUtil ];then echo "DISK:${DISK}      TIME:`date +%Y%m%d%H%M`  \ RATE:${rateAlarm}      THRESHOLD:${rateGEUtil}" >> ${outAlertFile}.tmp Alert="YES"fi done if [ $Alert= "YES" ];then cat ${outAlertFile}.tmp >> ${outAlertFile} mail -s "DISK IO Alert"  root@localhost< ${outAlertFile}.tmp fi

最后,脚本将分析活动归档,便于下次分析时定位起始行;另外,分析过程中产生的文件将被删除。

清单 10. IOAnalyzer.sh 记录分析活动日志和清除临时文件
#---------------------------------------------------------------- # Clearup temporary files and logging # ---------------------------------------------------------------- echo "IOSTATFILE:${inIostatFile}        TIME:`date +%Y%m%d%H%M`  \ STARTLINE:${StartLineNum}       ENDLINE:${EndLineNum}   ALERT:${Alert}" \ >> ${outLogFile} rm -f ${outLogFile}.tmp rm -f ${outAlertFile}.tmp rm -f ${inIostatFile}.tail exit 0

脚本使用示例

以下为 IOAnalyzer.sh 脚本在 AIX 上使用示例

1 .后台执行 iostat, 并将输出重定向到文件中

清单 11. 后台执行 iostat
# nohup iostat -d 5 > /root/iostat.out &
(对于 Linux,运行 iostat -d – x 5 > /root/iostat.out &)

2 .编辑 crontab 文件,每 10 分钟运行一次 IOAnalyzer.sh 脚本,-u 70 –r 80,表示在距上次运行 IOAnalyzer.sh 至今产生的某磁盘的监控记录中的 80% 使用率达到或超过 70%,即发出告警。告警日志和分析日志可通过 IOAnalyzer.sh 的 –l –a 参数指定,本例保持默认值,即在 iostat 的输出文件所在目录产生 iostat.out.log 和 iostat.out.alert 文件。

清单 12. 编辑 crontab
# crontab – e 0,10,20,30,40,50 * * * * /root/IOAnalyzer.sh -i /root /iostat.out -u 70 \-r 80>/tmp/iostat.out 2>&1

3 .用户收到告警邮件,需要进一步查询历史记录时,可查看日志文件

清单 13. 查看日志文件
# cat /root/iostat.out.log | more IOSTATFILE: /root/iostat.out TIME:200905200255 STARTLINE:7220 ENDLINE:7580  ALARM:YES IOSTATFILE: /root/iostat.out  TIME:200905200300  STARTLINE:7581 ENDLINE:7940 ALARM:YES IOSTATFILE:/root/iostat.out TIME:200905200305  STARTLINE:7941 ENDLINE:8300 ALARM:YES [AIXn01]> cat /root/iostat.out.alert | more DISK:hdisk4     TIME:200905200250         RATE:84      THRESHOLD:70 DISK:hdisk5     TIME:200905200250         RATE:84      THRESHOLD:70 DISK:hdisk6     TIME:200905200250         RATE:84      THRESHOLD:70

回页首

小结

本文介绍了 Unix/Linux 上的磁盘 I/O 管理命令并通过一个自动化监控脚本详细介绍了如何实现磁盘 I/O 的自动化监控管理。磁盘 I/O 的自动化监控能帮助系统管理员及时发现磁盘 I/O 的异常问题,管理员可通过采取相应的措施使得问题得以消除和缓解。

转载于:https://my.oschina.net/u/347414/blog/627651

Unix/Linux 磁盘 I/O 性能监控命令相关推荐

  1. Linux常见的一些性能监控命令

    文章目录 全局监控 top CPU监控 uptime 内存监控 free vmstat 磁盘监控 df iostat 网络监控 netstat 进程监控 ps lsof 在我们使用Linux进行开发. ...

  2. Linux(CentOS)性能监控命令free

    1.free -h [root@Beta-nginx test1]# free -h free: invalid option -- 'h' usage: free [-b|-k|-m|-g] [-l ...

  3. Linux(CentOS)性能监控命令strace

    1.简介 strace 常用来跟踪进程执行时的系统调用和所接收的信号.在Linux 世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换 ...

  4. linux Centos下搭建性能监控Spotlight on Unix

    公司要做压力测试,有Linux服务器一台,系统Centos6.5,为了直观的展示系统性能,更好的去分析服务器,故要搭建一个监控.闲言休讲,直奔主题. 首先,Linux服务器一台:系统Centos6.5 ...

  5. 六个 Linux性能监控命令行工具

    六个 Linux性能监控命令行工具  1.htop - http://htop.sourceforge.net/ 一个可以让用户与之交互的进程查看器.作为文本模式的应用程序,主要用于控制台或 X 终端 ...

  6. 磁盘 I/O 性能监控指标和调优方法

    在介绍磁盘 I/O 监控命令前,我们需要了解磁盘 I/O 性能监控的指标,以及每个指标的所揭示的磁盘某方面的性能.磁盘 I/O 性能监控的指标主要包括: 指标 1:每秒 I/O 数(IOPS 或 tp ...

  7. 《Unix/Linux日志分析与流量监控》书稿完成

    <Unix/Linux日志分析与流量监控>书稿完成 近日,历时3年创作的75万字书稿已完成,本书紧紧围绕网络安全的主题,对各种Unix/Linux系统及网络服务日志进行了全面系统的讲解,从 ...

  8. windows CPU性能监控命令

    windows CPU性能监控命令 分别为用户CPU时间  系统CPU时间   总CPU时间 typeperf "\Processor(_Total)\% User Time" & ...

  9. 磁盘I/O性能监控 from gnaw0725

    磁盘I/O性能监控 磁盘I/O性能监控指标如何做的问题.我们目前需要关注一些应用的磁盘I/O状态监控情况,服务器使用RAID10或RAID5.由于%DISK TIME的数值在RAID下超出100%,我 ...

最新文章

  1. python统计csv行数_对Python 多线程统计所有csv文件的行数方法详解
  2. Java语言的循环控制结构
  3. 重载session存储方式–session_set_save_handler()
  4. http post请求 参数放在路径后面 java_「思唯网络学院」网络基本概念之HTTP协议...
  5. 九九乘法表代码口述_利用随机函数实现座次表的随机排座
  6. win10 ie中没有java,win10没有ie浏览器怎么处理_window10找不到ie浏览器如何解决
  7. 【今日CV 视觉论文速览】 Part2 25 Jan 2019
  8. 个人项目1:随机生成30道整数四则运算题
  9. 数据结构和算法———P1 绪论
  10. 架构图解:支付宝钱包系统架构内部剖析
  11. matlab7安装包+Matlab 7出现【unknown exception】解决办法—亲测可用
  12. Idea配置SVN教程
  13. android输入法横向,Android输入法横向评测—手写输入篇
  14. 蓝牙耳机无法与计算机连接,蓝牙耳机怎么连接电脑【图文教程】
  15. 2017年总结和计划
  16. 1949: JH说要ak啦!
  17. 天猫手机卖到第一:手机厂在想什么
  18. PostgreSQL扫描方法综述
  19. XLSX转换为DOCX,Aspose.Cells快速搞定
  20. 不入小程序,则为大笨熊

热门文章

  1. 东方联盟郭盛华引资近100亿,他到底要干什么?
  2. 一个现代孔乙己的职场生涯
  3. Oauth2.0实现单点登录的原理流程,通俗易懂!
  4. win7小工具打不开_win7nvidia控制面板打不开-win7nvidia控制面板打开教程
  5. js 中文英文数字首字母混合排序
  6. openjudge 1.5.33
  7. Android TextInputLayout修改提示信息文字颜色
  8. matlab改进大规模邻域搜索算法求解路径优化
  9. inux系统用户名和全名有什么区别
  10. 二进制安装K8S(四):部署flannel网络