Linux下的数据监控工具

1.  Vmstat
       Vmstat,virtual memmory statistics(虚拟内存统计),主要是对操作系统的内存信息、进程状态、cpu活动等进行监视,但是它不能对某个进程进行深入的分析。
       Procs中r列表示运行和等待CPU时间片的进程数,如果r值长期大于CPU个数,说明CPU资源不够用啦,可以适当增加CPU数量。
       Procs中b列表示当前等待资源的进程数,包括等待I/O,内存等。
       Swpd列表示切换到内存交换区的KB数,一般si,so为0的话基本不影响系统的性能。

      Cache是page cache的内存数量,Linux会把空闲的物理内存的一部分拿来做文件和目录的缓存,以便提高程序执行的性能。如果cache的值较大的话,说明缓存了太多的文件,如果bi值小的话,说明文件系统效率比较高。Si是每秒从磁盘读入虚拟内存的大小,如果这个值一直大于0,表示物理内存不够用或者内存泄露了,需要查找耗内存进程解决掉。Bi,bo是表示从块设备读入数据的总量以及写到块设备的数据总量。如果bi+bo值比较大,而且wa值也比较大的话,说明系统磁盘I/O可能有问题,性能不高。In和cs是每秒钟的设备中断数以及上下文切换数。它们很大的话,表面内核消耗的CPU时间较多。

2.  Top

       Top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态。它可以按照系统中当前进程的CPU利用率以及占用的内存大小进行排序,可以比较快速定位出系统响应迟钝的原因。如果在前台执行该命令,它将独占前台,直到用户终止该程序为止。

      top是一个显示数据较多的工具,第一行显示的是系统的开机运行时间,机器的CPU负载信息;第二行显示当前系统任务的总数,以及各个状态的进程数;第三行显示的是CPU资源的使用情况总览;第四行显示内存的使用情况总览;第五行显示的是内存交换区的使用情况总览;后面开始是每个进程对资源使用的情况。
3.  Nmon
     Nmon提供对CPU、内存、网络、磁盘等系统资源占用情况分析,相比其他Linux命令获取到的数据,nmon的功能更为集中、配置性更强。通过nmon采集到数据之后可以在windows系统中使用nmon_analyser做数据的展示以及分析工作,可视化效果比较好。
     由于一般Linux系统都不自带nmon,使用之前需要下载安装。
4.  Uptime
     Uptime命令显示系统已经运行了多长时间,它依次显示当前时间、系统已经运行了多长时间、目前有多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载。
    关于系统平均负载,它表示在特定时间间隔内运行队列中的平均进程数。如果一个进程满足以下条件则其就会位于运行队列中:没有在等待I/O操作的结果;没有主动进入等待状态;没有被停止。
5.  Netstat
    Netstat命令可以显示本机的网络连接情况,监听端口以及路由表等各种网络相关信息。Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。
比较常用的可以用次命令查看当前开启监听的服务器进程信息以及端口信息。
6.  Free
    Free是监控Linux使用情况最常用的命令。
 “Free -m”可以查看以M为单位的使用情况,这里主要观察free和cached两列。
一般来说,如果应用程序可用内存/系统物理内存>70%时,表明目前系统内存资源比较充足,不影响系统性能;如果应用程序可用内存/系统物理内存<20%时,表明目前系统内存资源比较紧缺,需要释放其他程序内存或者增加内存;如果应用程序可用内存/系统物理内存在20%-70%之间,表明目前系统的内存资源基本满足应用需求,暂时不影响系统的性能。
7.  Sar
     Sar也是一个强大的分析系统性能的工具,它可以比较全面的获取系统的CPU,运行队列,磁盘IO,分页,内存,CPU中断,网络等多项数据。
   上图是使用sar获取系统CPU的整体负责情况,每隔1秒统计一次,统计3次,最后会给出3次的平均值。需要查看其他的数据可以查看手册使用。
8.  Iostat
     Iostat是I/O statistics的缩写,主要功能是对系统的磁盘I/O操作进行监控。它的输出主要显示磁盘读写操作的统计信息,同时也会给出CPU的使用情况。
   这里显示的是查看CPU和磁盘的信息,统计间隔2秒,共3次。
9.  Valgrind
    Valgrind是一款广泛用于监控程序运行过程进行内存调试、内存泄漏检测以及性能分析的工具。它会给出内存泄漏的统计,包括definitely lost,indirectly lost,possibly lost,still reachable ,suppressed等,我们可以使用valgrind来测试程序中内存不规范      使用的部分。同时对于地址越界问题也可以通过valgrind扫出来,它会统计invalid write的情况。

你可能感兴趣的:(Linux,Linux系统开发维护实战)