最近在调试程序的时候经常需要查看服务器的性能问题。那么到底是需要查看服务器的哪些性能呢,如何查看性能呢?下面主要就说一下一些查看服务器性能的命令。
注:由于参数过多,我只列出了几个常观察的参数,更多的参数说明有附带链接作为参考
free –m 查看内存使用情况
这个命令比较简单,-m 代表下面的是以M为单位
Mem是表示物理内存,主要看 Mem free代表还有多少内存可以
第1行 Mem:
total:表示物理内存总量。
used:表示总计分配给缓存(包含buffers 与cache )使用的数量,但其中可能部分缓存并未实际使用。
free:未被分配的内存。
shared:共享内存,一般系统不会用到,这里也不讨论。
buffers:系统分配但未被使用的buffers 数量。
cached:系统分配但未被使用的cache 数量。
buffer 与cache 的区别见后面。
total = used + free
第2行 -/+ buffers/cached:
used:也就是第一行中的used - buffers-cached 也是实际使用的内存总量。
free:未被使用的buffers 与cache 和未被分配的内存之和,这就是系统当前实际可用内存。
free 2= buffers1 + cached1 + free1 //free2为第二行、buffers1等为第一行
buffer 与cache 的区别:
A buffer is something that has yet to be "written" to disk.
A cache is something that has been "read" from the disk and stored for later use
第3行:
第三行所指的是从应用程序角度来看,
对于应用程序来说,buffers/cached 是等于可用的,
因为buffer/cached是为了提高文件读取的性能,
当应用程序需在用到内存的时候,buffer/cached会很快地被回收。
所以从应用程序的角度来说,可用内存=系统free memory+buffers+cached.
更多详解可以参考:http://www.linuxso.com/command/free.html
iostat命令
iostat是查看系统IO情况的命令
% user显示了在用户级(应用程序)执行时产生的 CPU 使用率百分比。
% system显示了在系统级(内核)执行时产生的 CPU 使用率百分比。
% idle显示了在 CPU 空闲并且系统没有未完成的磁盘 I/O 请求时的时间百分比。
% iowait显示了 CPU 空闲期间系统有未完成的磁盘 I/O 请求时的时间百分比。
%nicenice操作(改变进程优先序列操作)操作使用的CPU百分比
%steal管理程序维护另一个虚拟处理器时候,虚拟CPU的无意识等待时间百分比
在所有显示中,我们要注意的有几个:
1 iowait,如果iowait较高,表示硬盘操作存在IO瓶颈
2 idle, 如果高,说明CPU较空闲,如果持续低于10的话,说明CPU处理能力低,此时存在CPU瓶颈
更多说明请看:
http://wenku.baidu.com/view/404bcac48bd63186bcebbc95.html
http://wenku.baidu.com/view/900a99370b4c2e3f57276313.html
sar 命令(system activity reporter )
sar是查看操作系统的资源使用情况,CPU,内存,IO等都会在这个命令中得到体现
sar [参数] [间隔次数] [统计次数]
sar -A 1 10代表列出所有统计项目,每1s统计一次,共统计10次
Sar -A中有许多项参数,一个一个说吧
(8 CPU)很明显,这台机子是8核的
%irq CPU用于硬件交互所占用的时间百分比
%soft CPU用于应用程序交互所占用的时间百分比
%guest CPU用于虚拟处理器所占用的时间百分比
await IO请求平均需要耗费的时间
svstm IO访问设备的平均时间
%util CPU的IO访问所占用和等候的时间,如果这个时间很大的话,就说明CPU的时间都放在IO操作和等候上了。此时IO瓶颈。
sar还有更多选项可以参考:
http://linux.die.net/man/1/sar
netstat命令
这里就说几个常看的
Local Address是本地端口
Foreign Address是连接到外部的IP和端口
state是这个socket的状态
Recv-Q和Send-Q表示端口的吞吐量
比如现在想看这台机子的nginx有多少个连接
netstat -anp | grep "nginx" | wc –l
更多的注释说明在:http://linux.die.net/man/8/netstat
参考资料
建议读者需要查看某个linux命令,直接参考这个网站:
虽然是E文,但是比参考很多零零散散的文章好多了。