参考如下几遍文章,整理出自己需要的计数器关注点
top: http://www.jb51.net/LINUXjishu/34604.html
vmstat: http://www.jb51.net/LINUXjishu/152024.html
iostat: http://www.jb51.net/LINUXjishu/152032.html
free: http://www.jb51.net/LINUXjishu/10945.html
汇总: http://www.cnblogs.com/taosim/articles/4054142.html
*************************************************************************************************************************************************************************************************************
1.top 使用top查看系统的总体运行情况
1.1第一行:查看 load average 系统负载,输出的3个值不能大于系统逻辑cpu的个数。
例如:系统有4个逻辑CPU(我们经常说的4核),如果load average的三个值长期大于4时,说明CPU很繁忙,负载很高,会影响到系统性能,但是偶尔大于4时,一般不会影响系统的性能。如果load average 的输出值小于CPU的个数,表示CPU比较空闲
系统逻辑CPU如何查看:cat /proc/cpuinfo|grep processor|wc -l
1.2 第三行:查看us+sy<70%为好,=85%为坏,>90%为糟糕. 当CPU的处理时间更多的是在sy 时,说明已经超负荷
us:用户空间占用cpu百分比
sy: 内核空间占用CPU百分比
1.3 Tasks 这行反应的是当前系统的任务状态,主要看running和zombie进程的数量,一个健康的系统zombie(僵死进程)的数量一定是为0的,
否则肯定系统已经出不小的问题了
1.4 Mem这行反应当前系统内存使用状况
1.5 Swap 这行就是系统交换分区使用状态,一个性能优越的系统,交换分区使用量一定是为0的,交换分区只是一种应对在系统内存不足时的一种紧急机制,用到交换分区,说明可以考虑增加内存或者裁减现有内存数据大小了。毕竟交换分区就是硬盘,速度和内存差了太多。
2. df -h 查看硬盘
硬盘容量如果爆满的话,那么什么诡异的情况都可能出现,这个已经非常危急了
3.dstat -n 查看宽带
这里如果细分的话就复杂了,比如是否有网络攻击,封包数量和特征是否异常等,zabbix是其中的佼佼者,这里我们只要看目前的带宽有没有接近网卡的上限
dstat 功能很强大,
默认情况下,dstat 会每隔一秒刷新一次数据,一直刷新并一直输出,按 Ctrl+C 退出 "dstat"
4.iostat ,将对系统的磁盘操作活动进行监视
4.1 %iowait<20 为好,=35为坏,>=50为糟糕,如果%iowait的值过高,表示硬盘存在I/O瓶颈。
(%iowait:CPU等待输入输出完成时间的百分比)
4.2 若%idle值高,表示CPU较空闲,如果%idle值高但系统响应慢时,有可能是CPU等待分配内 存,此时应加大内存容量。
%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。
(%idle:CPU空闲时间百分比)
命令:iostat -d -x -k 1 1
4.3 如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。
(%util: 一秒中有百分之多少的时间用于 I/O 操作,即被io消耗的cpu百分比)
4.4 %idle小于70% IO压力就较大了,一般读取速度有较多的wait。
4.5 可以结合vmstat 查看查看b参数(等待资源的进程数)和wa参数(IO等待所占用的CPU时间的百分比,高过30%时IO压力高)。
4.6 avgqu-sz 也是个做 IO 调优时需要注意的地方,这个就是直接每次操作的数据的大小,如果次数多,但数据拿的小的话,其实 IO 也会很小。如 果数据拿的大,才IO 的数据会高。也可以通过 avgqu-sz × ( r/s or w/s ) = rsec/s or wsec/s。也就是 讲,读定速度是这个来决定的。
(avgqu-sz: 平均I/O队列长度。)
(r/s: 每秒完成的读 I/O 设备次数。即 rio/s)
(w/s: 每秒完成的写 I/O 设备次数。即 wio/s)
4.7 如果 svctm 比较接 近 await,说明 I/O 几乎没有等待时间;如果 await 远大于 svctm,说明I/O 队列太长,io响应太慢,则需要进行必要优化。如 果avgqu-sz比较大,也表示有大量io在等待。
其中的svctm一项,反应了磁盘的负载情况,如果该项大于15ms,并且util%接近100%,那就说明,磁盘现在是整个系统性能的瓶颈
await: 平均每次设备I/O操作的等待时间 (毫秒)。
svctm: 平均每次设备I/O操作的服务时间 (毫秒)。
5.vmstat 可对操作系统的虚拟内存、进程、CPU活动进行监控
备注:
5.1 如果 r经常大于 4 ,且id经常少于40,表示cpu的负荷很重
(r: 运行队列中进程数量)
(id: 空闲时间(包括IO等待时间),中央处理器的空闲时间 。以百分比表示。)
5.2 如果pi,po 长期不等于0,表示内存不足。(pi、po用 dstat 查看)
当系统内核发现可运行内存变少时,就会通过Page-Out来释放一部分物理内存。尽管Page-Out不是经常发生,但是如果Page-out频 繁不断的发生,直到当内核管理分页的时间超过运行程式的时间时,系统效能会急剧下降。这时的系统已经运行非常慢或进入暂停状态,这种状态亦被称作 thrashing(颠簸)。
5.3 如果disk 经常不 等于0, 且在 b中的队列 大于3, 表示 io性能不好。(disk不为0也不理解)
若发现有些进程处于阻塞状态(查看b值很多不为0,且有些还达到3了)但cpu是又很空闲(如id值很大),应是等着进程进来运算,而进程迟迟没有到达,这个肯定就是数据在交换分区了,存取太慢导致的卡和延迟,后来关闭了交换分区,并且整理内存
5.4 如果swpd的值不为0,但是SI,SO的值长期为0,这种情况不会影响系统性能
(si: 每秒从交换区写到内存的大小,由磁盘调入内存)
(so: 每秒写入交换区的内存大小,由内存调入磁盘)
5.5 注意:如果cache的值大的时候,说明cache处的文件数多,如果频繁访问到的文件都能被cache处,那么磁盘的读IO bi会非常小。
5.6 内存够用的时候,si so 这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响,磁盘IO和CPU资源都会被消耗。
有些朋友看到空闲内存(free)很少的或接近于0时,就认为内存不够用了,不能光看这一点,还要结合si和so,如果free很少,但是si和so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。
5.7
IO:(现在的Linux版本块的大小为1kb)
bi: 每秒读取的块数
bo: 每秒写入的块数
注意:随机磁盘读写的时候,这2个值越大(如超出1024k),能看到CPU在IO等待的值也会越大。
系统:
in: 每秒中断数,包括时钟中断。
cs: 每秒上下文切换数。
注意:上面2个值越大,会看到由内核消耗的CPU时间会越大。
CPU(以百分比表示):
us: 用户进程执行时间百分比(user time)
注意: us的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超50%的使用,那么我们就该考虑优化程序算法或者进行加速。
sy: 内核系统进程执行时间百分比(system time)
注意:sy的值高时,说明系统内核消耗的CPU资源多,这并不是良性表现,我们应该检查原因。
wa: IO等待时间百分比,
这里wa的参考值为30%,如果wa超过30%,说明IO等待严重,这可能是磁盘大量随机访问造成的,也可能磁盘或者磁盘访问控制器的带宽瓶颈造成的(主要是块操作)。
注意:wa的值高时,说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈(块操作)。
id: 空闲时间百分比
6. free 显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等
6.1 -buffers/cache 的内存数(等于第1行的 used - buffers - cached),即实际使用的内存总量[t1]
+buffers/cache 的内存数 (等于第1行的 free + buffers + cached),即系统当前实际可用内存
[t1]第 一行是从OS的角度来看,因为对于OS,buffers/cached 都是属于被使用,第三行所指的是从应用程序角度来看,对于应用程序来说,buffers/cached 是等于可用的,因为buffer/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer/cached会很快地被回收
6.2 当可用内存少于额定值的时候,就会开会进行交换.如何看额定值(RHEL4.0):
#cat /proc/meminfo (这段不理解)
当内存的需求大于RAM(内存)的数量,服务器启动了虚拟内存机制,通过虚拟内存,可以将RAM段移到SWAP DISK的特殊磁盘段上,这样会 出现虚拟内存的页导出和页导入现象,页导出并不能说明RAM瓶颈,虚拟内存系统经常会对内存段进行页导出,但页导入操作就表明了服务器需要更多的内存了, 页导入需要从SWAP DISK上将内存段复制回RAM,导致服务器速度变慢。