ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Linux性能监控及常用命令简介(二)

Linux性能监控及常用命令简介(二)

原创 Linux操作系统 作者:kuqlan 时间:2015-03-30 18:56:46 1 删除 编辑

 作为DBA,具备一定的Linux服务器性能监控也是很有必要的。有时在服务器性能瓶颈导致Oracle数据库性能问题,也就是说在Oracle视角来看几乎没有什么等待或alertlog里的错误跟踪,但是系统还是缓慢或用户反馈系统响应时间相对平时的正常状态还是明显的差,这时我们不放尝试如下方法。入门知识请见上一篇文章“http://blog.itpub.net/18841027/viewspace-1476488/”。

 

 

使用top命令监控CPU、内存状态

#top

计算机生成了可选文字:
up 52 days, 10:35, 
3 ü?er s, 
Ioad average: 8. 68, 8. 48, 8. 07 
top 
Tasks: 1081 total, 
7 runn?ng, 1074 sleeping, 
0 stopped, 
0 zornb?e 
.8g R 87.0 
Cpu (s) : 
9. 4%us, 
O. 2%sy, O. O%ni, 89. 7%id, 
O. O%hi, 
300644k buffers 
234813841, cached 
Mem: 
Swap : 
11884 
11922 
11914 
11896 
11910 
328225761, total, 
307199921, total, 
259319721, used, 
Ok used, 
6890604k free, 
307199921, free, 
S %CPU %MEM 
VIRT 
0 7537m 
0 7539m 
0 7537m 
0 7539m 
0 7539m 
RES 
. ?g R 98 
.7g R 92 
. ?g R 90 
s 79.8 
T IME + 
COMMAND 
arac? e 
arac? e 
arac? e 
arac? e 
arac? e 
FID USER 
arac? e 
arac? e 
arac? e 
arac? e 
arac? e 
20 
20 
20 
20 
20 
1:30. 
1:25. 
0:48. 
1:46. 
1:29. 
87 
25 
09 
53 
60

Top命令输出第一行显示系统更新的时间,1分钟、5分钟、15分钟平均负载;第二行显示所有的进程,包括目前运行的进程(Run)、挂起的进程(Sleep)、僵尸进程(Zombie)和停止的进程(Stop)。第三行显示CPU的使用情况,包括内核空间占用、用户空间占用的比例以及IDLE的比例。第五行和第六行显示当前物理内存和虚拟内存的使用情况。

Top输出标识:

PID:进程ID

USER:进程所有者

PRI:进程优先级别

NI:进程优先级别数值

VIRT:进程需要占用的物理内存值

RES:进程实际占用的物理内存值

SHR:进程占用共享内存值

S:进程当前使用CPU状态

%CPU:进程当前CPU使用率   

%MEM:进程占用物理内存百分比

TIME+:进程启动后,占用总的CPU时间

COMMAND:进程名   

 

5、使用iostat监控i/o性能

目前Linux服务器主要性能瓶颈在于i/o,主要是由于i/o系统性能的提高远低于CPU、内存等性能的提高。根据摩尔定律,18个月,CPU性能和内存容量就能翻一番。但是作为外部存储设备---磁盘,由于机械运动的本质,导致性能提供非常有限,每年约为7%提高。Iostat监视磁盘的工作状态,统统是显示CPU的使用情况。Iostat命令的格式如下:

Iostat [-c|-d] [-k] [-t] [-v][-x][device][interval[count]]

-c:显示CPU使用情况

-d:显示磁盘使用情况

-k:每秒k字节显示数据

-t:打印report时间

-v:打印版本信息和用户发

-x device:指定要统计的设备名称,默认所有设备

Interval:指定每次统计时间间隔,count指定按照这个时间间隔统计的次数。

计算机生成了可选文字:
Croot@kt-db2 df -h 
Fi lesystern 
/ dev / Inapper /vg_ktdb2-LogV0100 
/ dev/ s dag 
/ dev / Inapper /vg_ktdb2-LogV0105 
/ dev / Inapper /vg_ktdb2-LogV0104 
/ dev / Inapper /vg_ktdb2-LogV0102 
/ dev / Inapper/vg_ktdb2-LogV0101 
8. 37 
o. 61 
Size 
49G 
194M 
906G 
49G 
20G 
49G 
Llsed Avail Llse% 
Mounted on 
/ dev / shin 
/ boot 
/ data 
/ home 
/ opt 
/ v ar 
LogV0105 
85M 
106G 
180M 
9. 7G 
472M 
16G 
150M 
755G 
46G 
46G 
1% 
1% 
2% 
(64 CPL') 
Croot@kt-db2 instat -x 
Linux 2. 6. 32-431. el 6. x86 64 (k t- 
avg-cpu : %user *nice % systern 
/ dev/mapper/vg_ktdb2- 
db2) 
x86 64 
vsec/s 
1926. 59 
avgqu-sz 
await 
1. 14 
1. 45 
%steal 
240. 82

Iostat输出标识:

Device:监测设备名称

rrqm/s:每秒需要读取操作数

wrqm/s:每秒需要写入操作数

r/s:每秒实际读的操作数

w/s:每秒实际写的操作数

rsec/s:每秒读取扇区数

wsec/s:每秒写入扇区数

rkB/s:每秒实际读取的大小,单位KB

wkB/s:每秒实际写入的大小,单位KB

avgrq-sz:需求平均大小区段

avgqu-sz:需求平均队列长度

await:等待i/o的平均时间,单位ms

svctm:i/o需求完成的平均时间

%until:被i/o消耗的实际的CPU时间。

  1. sar工具:系统活动状态报告

sar语法如下:

sar [-option] [-o file] t [n]

该命令每t秒采样一次,共采样n次,其中-o file标示采样结果以二进制的形式保存到file文件中,option选项如下:

-A:通过读取/var/log/sar目录下的所有文件分类显示所有的历史数据

-b:通过读取设备的I/O中断读取设备的吞吐量

-B:报告内存和虚拟内存交换统计

-c:报告每秒创建的进程数

-d:报告物理设备的写入和读取的信息,可以和-p一起使用

-f:从二进制文件读取内容,如sar –f file

-n:分析网络状态统计,后面可以跟DEV,EDEV,NFS,NFSD以及SOCK等例如-n DEV

-o:把统计信息写入文件

-P:报告每个处理器的应用统计,用于多处理器

-p:显示友好设备名,方面查看

-r:内存和交换区占用统计

-u:报告cpu利用率参数

-v:报告inode,文件或者其他内核表资源占用信息

-w:报告系统交换信息,每次交换数据的次数

-W:报告系统交换吞吐量

-x:用于监控进程,指定PID

-X:用户监控子进程,指定一个子进程的ID

下面的例子每秒刷新1次CPU利用率,共刷新3次:

计算机生成了可选文字:
Croot@kt-db2 mapperl# sar -u 2 5 
2015 年 03 月 30 日 
Linux 2 . 气 32 一 1 . 巳 1 气 x86 一 6 (kt-db2) 
x86 6 
18 时 17 分 20 秒 
CPLI 
. 1 00 亠 O 亠 冂 乙 
川 口 0 口 0 口 0 口 0 00 
口 0 亠 LB LB , 1 , 1 
巳 冂 乙 亠 亠 口 0 , 1 
^ 门 冂 乙 冂 乙 
巳 冂 乙 00 00 00 冂 乙 
口 0 一 LB 一 
巳 , ^ 匕 
18 时 17 分 22 秒 
a11 
1 00 
18 时 17 分 2 秒 all 
1 00 
18 时 17 分 26 秒 
a11 
1 00 
18 时 17 分 28 秒 
a11 
1 00 
18 时 17 分 30 秒 
a11 
1 00 
平 均 时 间 . 
a11 
1 00

CPU:CPU编号

%user:用户模式中运行程序所花的时间

%nice:运行正常进程所花的时间

%system:内核空间所占用的时间

%iowait:没有进程在CPU上执行,处理器等待i/o完成的时间

%steal:?

%idle:进程在CPU上执行的时间

  1. vmstat工具
  1. vmstat 命令报告关于内核线程、虚拟内存、磁盘、陷阱和 CPU 活动的统计信息。由 vmstat 命令生成的报告可以用于平衡系统负载活动。系统范围内的这些统计信息(所有的处理器中)都计算出以百分比表示的平均值,或者计算其总和。

 

 

计算机生成了可选文字:
〔root@kt-db2 mapper 〕 # vmstat -n 1 
pr 囗 C S 
—ITEITlOry— 
—swap— 
r b serpd free 
buff cache 
6 1 
0 6876188 303164 23499124 
— 「 匕 亠 「 Ⅱ ) 「 , ㄇ 乙 ㄇ 乙 
亠 亠 「 匕 「 Ⅱ ) ㄇ 乙 「 Ⅱ ) 
6 1 
0 6875556 303164 23499124 
ㄇ 乙 — ㄇ 乙 「 Ⅱ ) 「 Ⅱ ) 
ㄇ 乙 亠 ㄇ 乙 「 匕 — 
0 6875564 303164 23499124 
0 6875552 303164 23499136 
0 6875680 303164 23499136 
6 1 
0 6875548 303164 23499136 
0 6875708 303172 23499136 
0 6875716 303172 23499136 
0 6875344 303172 23499136 
0 6875720 303172 23499136

r:可运行进程的数量

b:阻塞进程的数量

swpd:已用交换空间的数量

free:自由RAM数量

buff:缓冲RAM的数量

cache:缓存RAM的数量

si:从磁盘分页到内存的数量

so:从内存分页到磁盘的数量

bi:从磁盘读取的块数

bo:写入磁盘的块

in:系统中断

cs:进程上下文开关

us:用户模式

sy:系统模式

wa:等待I/O

id:空闲

 

vmstat监控性能实例:

其中si和so两列都是0,说明swap没有真的i/0,设备的性能不会受到影响。

在sysctl中有个参数:vm.swappiness默认为60,在内存足够的时候,建议设置成0,这样可以尽量避免Linux 主动使用swap空间。

 

计算机生成了可选文字:
Croot@kt-db2 
pr 日 C S 
r b serpd 
mapperl# VITE t a t 1 
—ITEITlOry— 
—swap— 
cache 
23502272 
23502272 
23502272 
23502272 
23502272 
SY 
12 
—CPI-I— 
1 d 
Wa 
0 87 
0 91 
0 93 
0 93 
0 89 
s t 
652 
812 
572 
72 
—system— 
C S LIS 
free 
0 6885096 
0 6885 6 
0 6885 6 
0 6885 6 
0 6885128 
buff 
303656 
303656 
303656 
303656 
303656 
7917 
7052 
7195 
9102 
502 
鲕 13 
27 
92

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/18841027/viewspace-1479256/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Oracle技术爱好者,Oracle10g OCM,网名 KUQLAN ,具有7的年Oracle数据库管理实践,曾经参加过BOSS、ERP、云计算(OpenStack+kvm)等项目的一线工作。以前写博客是为了自己,而现在是为了自己和别人。因为领会了帮助别人和分享、沉淀和积累会创造快乐和价值...

注册时间:2009-01-26

  • 博文量
    183
  • 访问量
    1681004