-
Oracle DBA的UNIX便携式参考指南:服务器监控篇
资源介绍
10 服务器监控
使用命令来显示 Unix 服务器的高 CPU 资源占用会话。top 显示每个 CPU 的使用情况。
top 的输出分两部分。第一部分显示每个处理器的负载情况,第二部分显示使用 CPU
最多的会话信息。
# top
load averages: 0.23, 0.53, 0.49
64 processes: 1 running, 21 sleeping, 42 idle
CPU states: 7.5% user, 0.0% nice, 2.9% system, 89.4% idle
Memory: Real: 772M/991M act/tot Virtual: 1965M use/tot Free: 15M
PID USERNAME PRI NICE SIZE RES STATE TIME CPU COMMAND
837 afis 42 0 34M 29M sleep 128:39 11.70% unixsvr
824 afis 44 0 10M 1826K sleep 26:40 0.70% dtterm
5121 oracle 42 0 435M 15M sleep 0:01 0.60% oracle
717 root 44 0 10M 4358K sleep 13:43 0.30% Xdec
5120 root 44 0 5832K 3203K run 0:00 0.10% top
558 root 44 0 3640K 180K sleep 34:13 0.00% os_mibs
715 root 42 0 18M 11M sleep 0:02 0.00% smsd
775 afis 44 0 11M 1843K sleep 0:01 0.00% dtsession
5117 afis 54 10 8248K 565K sleep 0:00 0.00% dtscreen
5097 oracle 44 0 423M 3465K sleep 0:00 0.00% oracle
5101 oracle 44 0 427M 2793K sleep 0:00 0.00% oracle
5105 oracle 44 0 421M 2621K sleep 0:00 0.00% oracle
5103 oracle 44 0 421M 2138K sleep 0:00 0.00% oracle
562 root 44 0 2960K 851K sleep 0:00 0.00% cpq_mibs
5055 root 44 0 1936K 303K sleep 0:00 0.00% telnetd
作为一个 DBA 应该关心的内容有:
Load averages:平均负载。如果大于 1 说明服务器负荷过重。
CPU states:CPU 信息概要。7.5% user 的意思是 CPU 有 7.5%是用户占用,其他
可按字面类推。
Memory:Free 表明可用的内存数量。本例子中可用内存是 15M。
IDLE:CPU 空闲百分比
2. 使用 sar
sar 在 SVR4 环境中,例如 HP-UX、Solaris 中很普及,在 aix 中也可以用。Sar 命
令可以查看整体 CPU 消耗情况,磁盘、内存、JFS buffer 使用情况等。常见的 sar 使用
例子:
sar -u
显示 CPU 活动情况。例如:
# sar -u 2 5
AIX TSXJ 2 5 0052E51D4C00 10/09/06
System Configuration: lcpu=2
16:12:10 %usr %sys %wio %idle
16:12:12 100 0 0 0
16:12:14 99 1 0 0
16:12:16 99 0 0 0
16:12:18 41 1 26 31
16:12:20 46 1 0 53
Average 77 1 5 17
上面的命令每 2 秒显示一次 cpu 情况,显示 5 次。
sar -w
显示交换(swapping)活动。例如 5 秒钟显示一次,显示 5 次:
# sar -w 5 5
HP-UX corp-hp1 B.11.00 U 9000/800 08/09/00
19:37:57 swpin/s bswin/s swpot/s bswot/s pswch/s
19:38:02 0.00 0.0 0.00
19:38:07 0.00 0.0 0.00
…
0.0 222
0.0 314
Average 0.00 0.0 0.00 0.0 294
上面的输出列的含义:
swpin/s 每秒钟交换进(sawp-in)的进程数量
swpot/s 每秒钟交换出(sawp-out)的进程数量
bswin/s 每秒钟交换进的块数(每块512字节)
bswot/s 每秒钟交换出的块数(每块512字节)
pswch/s 每秒钟上下文交换数量
sar -b
显示 buffer 活动情况
# sar -b 1 6
HP-UX corp-hp1 B.11.00 U 9000/800 08/09/00
19:44:53 lread/s %rcache bwrit/s lwrit/s...
19:44:54 91 100 9 19...
19:44:55 0 0 0 5...
19:44:56 6 100 9 8...
19:44:57 30 100 9 20...
19:44:58 1 100 0 3...
19:44:59 1 100 9 4...
Average 22 100 6 10...
%wcache pread/s pwrit/s...
53 0 0...
100 0 0...
0 0 0...
55 0 0...
100 0 0...
0 0 0...
39 0 0...
各个列的含义:
lread/s
Number of reads per second from the Unix JFS buffer cache
%rcache
Buffer cache hit ratio (for the Unix JFS buffer cache) for read requests
bwrit/s
Number of physical writes to disk per second
lwrit/s
Number of writes per second to the Unix JFS buffer cache
%wcache
Buffer cache hit ratio (for the Unix JFS buffer cache) for write requests
pread/s
Number of reads per second from disk
pwrit/s
Number of writes per second to disk
3. 使用 vmstat
vmstat 是通用的 UNIX 监控工具,vmstat 在 IRIX 操作系统中是 osview。vmstat 的
第一个参数是间隔的秒数,也可以带第二个参数,表明显示多少次。vmstat 不同操
作系统输出结果不一样,含义也可能有区别,具体要看 man 帮助。
# vmstat 3
kthr memory cpu
---- ... --------------- ... --------------
r b ... fre re pi sr ... cs us sy id wa
0 0 ... 207 0 1 0 ... 142 18 4 75 4
0 0 ... 187 0 4 0 ... 70 2 1 91 6
0 0 ... 184 0 0 0 ... 99 5 2 89 4
0 0 ... 165 0 0 0 ... 98 1 8 52 40
0 0 ... 150 0 3 0 ... 136 4 2 87 6
0 0 ... 141 0 1 0 ... 192 5 0 91 4
在 HP-UX 或 AIX 下 vmstat 输出中一些重要的信息:
r
运行队列。当这个值超过CPU数量的时候,服务器就有CPU瓶颈(可以通
过lsdev -C|grep Process|wc -l 来获取CPU数量)
pi
page-in数量。这个参数非0暗示着系统缺少内存,内存被交换到磁盘。然而
当程序刚使用的时候也可能导致page-in非0。为了找到真正原因,则检查sr
列。如果sr也是非0,那么的确意味着缺少内存。
sr
扫描速率。如果扫描速率持续增加,那么页交换后台程序忙于分配内存页。
下面是CPU的一些信息:
us
用户占用CPU的百分比
sy
系统占用CPU的百分比
id
空闲CPU百分比
wa
等待CPU的百分比
用户和系统百分比之和(us+sy)接近 100 时,说明 CPU 繁忙,但并不意味着 CPU 过载。sr 超过
CPU 数量的时候意味着 CPU 过载。当 CPU 等待(wa)超过 20 的时候,那么 20%或者更多的处理
时间在等待资源,通常是 I/O。通常在备份或者导出等 I/O 操作的时候这个百分比比较大;但如
果正常的时候这个值一直挺高则也可能有 I/O 瓶颈。
4. AIX 下显示交换区(Swap)使用情况
lsps -a 可用来显示交换使用情况。之前我们讨论过,Oracle 数据库在消耗过多的
服务器内存的时候有可能产生很多交换,而 PGA 的内存需求引起内存移动到交换盘
的操作。
# lsps -a
Page Space Physical Volume Volume Group Size %Used Active Auto Type
hd6 hdisk0 rootvg 512MB 1 yes yes lv
上面%Used 是 1,说明有 1%的交换。
5. 显示 HP-UX 下的交换区使用情况
# swapinfo -tam
Mb Mb Mb...
TYPE AVAIL USED FREE...
dev 1024 25 999...
reserve – 999 -999...
memory 3966 3547 419...
total 4990 4571 419...
... PCT Mb
... USED RESERVE PRI NAME
... 2% 1 /dev/vg00/lvol2
...
... 89%
... 92% 0 -
6. 显示服务器平均负载情况(w 命令)。
Unix 的 w 命令用来显示高资源会话简单的信息。大多数的有经验的 Oracle DBA 都会
首先用这个命令来快速查看一下服务器负载情况,因为 w 命令在几乎所有的 Unix 下
都可以用。
# w
10:02AM up 60 days, 18:46, 3 users,
load average: 0.32, 0.39, 0.43
User tty login@ idle JCPU PCPU what
Oracle pts/0 08:17AM 0 80:18 80:16 w
oracle pts/1 09:15AM 5 2 0 ftp
miltonrv pts/2 01May 009days 0 0 -ksh
上面的输出中的 load average 分别是过去 1 分钟、5 分钟、15 分钟的负载情况。如
果大于 1 说明 CPU 紧张。
7. 使用 iostat
iostat 显示物理磁盘 I/O 情况。下面的 3 表明 3 秒钟显示一次。
# iostat 3
System configuration: lcpu=2 disk=5
tty: tin tout avg-cpu: % user % sys % idle % iowait
0.0 1302.0 1.8 0.6 89.3 8.3
Disks: % tm_act Kbps tps Kb_read Kb_wrtn
hdisk0 0.4 2.8 0.7 15919 15112048
dac0 0.0 0.8 0.2 643384 3730076
dac0-utm 0.0 0.0 0.0 0 0
hdisk1 0.0 0.8 0.2 643384 3730076
cd0 0.0 0.0 0.0 0 0
tty: tin tout avg-cpu: % user % sys % idle % iowait
0.3 3176.3 0.7 1.8 64.3 33.2
Disks: % tm_act Kbps tps Kb_read Kb_wrtn
hdisk0 71.0 501.3 123.7 0 1504
dac0 0.0 0.0 0.0 0 0
dac0-utm 0.0 0.0 0.0 0 0
hdisk1 0.0 0.0 0.0 0 0
cd0 0.0 0.0 0.0 0 0
上面比较重要的列:
Kb_read:过去的时间区间内读取得 K 字节数。(第一个显示的是历史总计,因此要看变
化情况,应该看其它的时间区间。)
Kb_wrtn: 过去的时间区间内写入得 K 字节数。
- 上一篇: 华为SAN存储使用操作系统自带多路径的双活配置指南
- 下一篇: Solaris巡检命令