作为DBA,具备一定的Linux服务器性能监控也是很有必要的。有时在服务器性能瓶颈导致Oracle数据库性能问题,也就是说在Oracle视角来看几乎没有什么等待或alertlog里的错误跟踪,但是系统还是缓慢或用户反馈系统响应时间相对平时的正常状态还是明显的差,这时我们不放尝试如下方法。入门知识请见上一篇文章“http://blog.itpub.net/18841027/viewspace-1476488/”。
使用top命令监控CPU、内存状态
#top
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指定按照这个时间间隔统计的次数。
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时间。
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次:
CPU:CPU编号
%user:用户模式中运行程序所花的时间
%nice:运行正常进程所花的时间
%system:内核空间所占用的时间
%iowait:没有进程在CPU上执行,处理器等待i/o完成的时间
%steal:?
%idle:进程在CPU上执行的时间
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空间。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/18841027/viewspace-1479256/ ,如需转载,请注明出处,否则将追究法律责任。