摘自:http://ixdba.blog.51cto.com/2895551/715742
摘自:http://database.chinaunix.net/a2010/0611/1065/000001065619_1.shtml
大多数的Linux发行版都装备了很多Linux系统监控工具,充分合理的利用这些工具,可以找出系统运行的性能瓶颈,包括硬盘瓶颈、CPU及内存瓶颈和网络瓶颈。
1.、找出瓶颈
2.、硬盘(存储)瓶颈
3.、CPU及内存瓶颈
4.网络瓶颈
--------------------------------------------
系统性能分析标准
性能调优的主要目的是使系统能够有效的利用各种资源,最大的发挥应用程序和系统之间的性能融合,使应用高效、稳定的运行。但是,衡量系统资源利用率好坏的标准没有一个严格的定义,针对不同的系统和应用也没有一个统一的说法,因此,这里提供的标准其实是一个经验值,表15.1给出了判定系统资源利用状况的一般准则:
表1给出了判定系统资源利用状况的一般准则:
表1
其中:
%user:表示CPU处在用户模式下的时间百分比。
%sys:表示CPU处在系统模式下的时间百分比。
%iowait:表示CPU等待输入输出完成时间的百分比。
swap in:即si,表示虚拟内存的页导入,即从SWAP DISK交换到RAM。
swap out:即so,表示虚拟内存的页导出,即从RAM交换到SWAP DISK。
-----------------------------------------------------------
常用系统监控工具:
--------------------------------------------------------
一、top,进程活动
top提供一个当前运行系统实时动态的视图,也就是正在运行进程。在默认情况下,显示系统中CPU使用率最高的任务,并每5秒钟刷新一次。
常用热键 热键用途
t 显示摘要信息开关.
m 显示内存信息开关.
a 分类显示系统不同资源的使用大户。有助于快速识别系统中资源消耗多的任务。
f 添加删除所要显示栏位.
o 调整所要显示栏位的顺序.
r 调整一个正在运行的进程Nice值.
k 结束一个正在运行的进程.
z 彩色/黑白显示开关
------------------------------------------------------
二、vmstat -系统活动、硬件及系统信息
使用 vmstat命令可以得到关于进程、内存、内存分页、堵塞 IO、traps及 CPU活动的信息
vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,很多linux发行版本都默认安装了此命令工具,利用vmstat命令可以对操作系统的内存信息、进程状态、CPU活动等进行监视,不足之处是无法对某个进程进行深入分析。
vmstat使用语法如下:
vmstat [-V] [-n] [delay [count]]
各个选项及参数含义如下:
l -V:表示打印出版本信息,是可选参数。
l -n:表示在周期性循环输出时,输出的头部信息仅显示一次。
l delay:表示两次输出之间的间隔时间。
l count:表示按照“delay”指定的时间间隔统计的次数。默认为1。
例如:
vmstat 3
表示每3秒钟更新一次输出信息,循环输出,按ctrl+c停止输出。
vmstat 3 5
表示每3秒更新一次输出信息,统计5次后停止输出。
# vmstat 3
输出样例:
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 2540988 522188 5130400 0 0 2 32 4 2 4 1 96 0 0
1 0 0 2540988 522188 5130400 0 0 0 720 1199 665 1 0 99 0 0
0 0 0 2540956 522188 5130400 0 0 0 0 1151 1569 4 1 95 0 0
0 0 0 2540956 522188 5130500 0 0 0 6 1117 439 1 0 99 0 0
0 0 0 2540940 522188 5130512 0 0 0 536 1189 932 1 0 98 0 0
0 0 0 2538444 522188 5130588 0 0 0 0 1187 1417 4 1 96 0 0
0 0 0 2490060 522188 5130640 0 0 0 18 1253 1123 5 1 94 0 0
显示内存使用详细信息# vmstat -m
显示内存活动 /不活动的信息# vmstat -a
-----------------------------------------------------
三、iostat命令
iostat是I/O statistics(输入/输出统计)的缩写,主要的功能是对系统的磁盘I/O操作进行监视。它的输出主要显示磁盘读写操作的统计信息,同时也会给出CPU使用情况。同vmstat一样,iostat也不能对某个进程进行深入分析,仅对系统的整体情况进行分析。
iostat一般都不随系统安装,要使用iostat工具,需要在系统上安装一个Sysstat的工具包,Sysstat是一个开源软件,官方地址为http://pagesperso-orange.fr/sebastien.godard
可以选择源代码包或rpm包的方式安装,这里不在讲述安装过程,安装完毕,系统会多出3个命令:iostat、sar和mpstat。然后就可以直接在系统下运行iostat命令了。
iostat使用语法如下:
iostat [ -c | -d ] [ -k ] [ -t ] [ -x [ device ] ] [ interval [ count ] ]
各个选项及参数含义如下:
-c:显示CPU的使用情况。
-d:显示磁盘的使用情况。
-k:每秒以k bytes为单位显示数据。
-t:打印出统计信息开始执行的时间。
-x device:指定要统计的磁盘设备名称,默认为所有的磁盘设备。
interval:指定两次统计间隔的时间;
count:按照“interval”指定的时间间隔统计的次数。
----------------------------------------------------
四、sar命令
sar命令很强大,是分析系统性能的重要工具之一,通过sar指令,可以全面的获取系统的CPU、运行队列、磁盘I/O、分页(交换区)、内存、CPU中断、网络等性能数据。
sar使用格式为:
sar [options] [g1] [-o filename] [interval [count] ]
各个选项及参数含义如下:
l options 为命令行选项,sar命令的选项很多,下面只列出常用选项:
Ø -A:显示系统所有资源设备(CPU、内存、磁盘)的运行状况。
Ø -u:显示系统所有CPU在采样时间内的负载状态。
Ø -P:显示当前系统中指定CPU的使用情况。
Ø -d:显示系统所有硬盘设备在采样时间内的使用状况。
Ø -r:显示系统内存在采样时间内的使用状况。
Ø -b:显示缓冲区在采样时间内的使用情况。
Ø -v:显示进程、文件、I节点和锁表状态。
Ø -n:显示网络运行状态。参数后面可跟DEV、EDEV、SOCK和FULL。DEV显示网络接口信息,EDEV显示网络错误的统计数据,SOCK显示套接字信息,FULL显示三个所有的信息。它们可以单独或者一起使用。
Ø -q:显示了运行队列的大小,它与系统当时的平均负载相同。
Ø -R:显示进程在采样时间内的活动情况。
Ø -y:显示终端设备在采样时间内的活动情况。
Ø -w:显示系统交换活动在采样时间内的状态。
l -o filename:表示将命令结果以二进制格式存放在文件中,filename是文件名。
l interval:表示采样间隔时间,是必须有的参数。
l count:表示采样次数,是可选参数,默认值是1。
例如:
要查看系统CPU的整体负载状况,每3秒统计一次,统计5次,可以使用以下组合:
sar –u 3 5
系统的CPU计数是从0开始的,如果要查看第二颗CPU的运行负载,使用下面组合:
sar –P 1 3 5
要查看系统磁盘的读写性能,使用以下组合:
sar -d 3 5
同理,查看系统内存使用情况、网络运行状态,可以分别使用下面命令:
sar -r 5 2
sar -n DEV 5 3
-----------------------------------------------
五、w -显示谁已登录,他们正在做什么?
w命令显示系统当前用户及其运行进程的信息。
# w username
# w vivek
输出样例:
17:58:47 up 5 days,20:28,2 users,oad average:0.36,0.26,0.24
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 10.1.3.145 14:55 5.00s 0.04s 0.02s vim /etc/resolv.conf
root pts/1 10.1.3.145 17:43 0.00s 0.03s 0.00s w
------------------------------------------------------
六、uptime -告诉系统已经运行了多久?
uptime命令过去只显示系统运行多久。现在,可以显示系统运行多久、当前有多少的用户登录、在过去的 1,5,15分钟里平均负载时多少。
# uptime
输入样例:
18:02:41 up 41 days, 23:42, 1 user, load average: 0.00, 0.00, 0.00
l可以被认为是最优的负载值。负载是会随着系统不同改变得。单 CPU系统 1-3和 SMP系统 6-10都是可能接受的。
------------------------------------------------------
七、ps -显示进程
ps命令显示当前运行进程的快照
-------------------------------------------------------
八、
---------------------------------------------------------
说在最后
以上我们讲解了三个常用的系统性能分析工具,其实linux下性能分析工具还有很多,例如uptime可以检查CPU的平均负载,free可以查看系统内存的使用状况,ps、top可以配合监控系统的进程运行状态,netstat可以监测网络流量状况等等,这些命令的使用方法在我前面文章已经讲述很多,故不在这里讲解。
系统性能优化是个涉及面广、繁琐、长久的工作,寻找出现性能问题的根源往往是最难的部分,一旦找到出现问题的原因,性能问题也就迎刃而解。因此,解决问题的思路变得非常重要。
例如,linux系统下的一个网站系统,用户反映,网站访问速度很慢,有时无法访问。
针对这个问题,(step by step)
第一步要做的是检测网络,可以通过ping命令检查网站的域名解析是否正常,同时,ping服务器地址的延时是否过大等等,通过这种方式,首先排除网络可能出现的问题;如果网络没有问题,接着进入
第二步,对linux系统的内存使用状况进行检查,因为网站响应速度慢,一般跟内存关联比较大,通过free、vmstat等命令判断内存资源是否紧缺,如果内存资源不存在问题,进入
第三步,检查系统CPU的负载状况,可以通过sar、vmstat、top等命令的输出综合判断CPU是否存在过载问题,如果CPU没有问题,继续进入
第四步,检查系统的磁盘I/O是否存在瓶颈,可以通过iostat、vmstat等命令检查磁盘的读写性能,如果磁盘读写也没有问题,linux系统自身的性能问题基本排除,
最后要做的是检查程序本身是否存在问题。通过这样的思路,层层检测,步步排查,性能问题就“无处藏身”,查找出现性能问题的环节也就变得非常简单。