转载于:http://blog.csdn.net/tianlesoftware/article/details/6198780ios
Linux系能监控主要涉及系统4个方面资源的监控:数据库
不一样的应用类型对各个资源的要求不同,因此监控的时候须要根据应用类型来着重对哪几个资源进行联合重点监控,这几个资源也是比较可能成为系统瓶颈的地方。服务器
监控这些资源的使用情况,通常须要用到如下命令:网络
工具 | 用途 |
top | 查看进程活动状态以及一些系统情况 |
vmstat | 查看系统状态,硬件和系统信息 |
iostat | 查看CPU负载,硬盘情况 |
sar | 综合工具,查看系统情况 |
mpstat | 查看多处理器情况 |
netstat | 查看网络情况 |
iptraf | 实时网络情况检测 |
tcpdump | 抓取网络数据包,详细分析 |
tcptrace | 数据包分析工具 |
netperf | 网络带宽工具 |
dstat | 综合工具,综合了vmstat, iostat, ifstat, netstat等多个信息 |
1:CPU并发
CPU 的占用主要取决于什么样的资源正在 CPU 上面运行,好比拷贝一个文件一般占用较少 CPU,由于大部分工做是由 DMA(Direct Memory Access)完成,只是在完成拷贝之后给一个中断让 CPU 知道拷贝已经完成;科学计算一般占用较多的 CPU,大部分计算工做都须要在 CPU 上完成,内存、硬盘等子系统只作暂时的数据存储工做。要想监测和理解 CPU 的性能须要知道一些的操做系统的基本知识,好比:中断、进程调度、进程上下文切换、可运行队列等。 这里用个例子来简单介绍一下这些概念和他们的关系,CPU每时每刻都有工做在作(进程、线程)而且本身有一张工做清单(可运行队列),由老板(进程调度)来决定他该干什么,他须要和老板沟通以便获得老板的想法并及时调整本身的工做(上下文切换),部分工做作完之后还须要及时向老板汇报(中断),因此打工仔(CPU)除了作本身该作的工做之外,还有大量时间和精力花在沟通和汇报上。tcp
CPU 也是一种硬件资源,和任何其余硬件设备同样也须要驱动和管理程序才能使用,咱们能够把内核的进程调度看做是 CPU 的管理程序,用来管理和分配 CPU 资源,合理安排进程抢占 CPU,并决定哪一个进程该使用 CPU、哪一个进程该等待。操做系统内核里的进程调度主要用来调度两类资源:进程(或线程)和中断,进程调度给不一样的资源分配了不一样的优先级,优先级最高的是硬件中断,其次是内核(系统)进程,最后是用户进程。每一个 CPU 都维护着一个可运行队列,用来存放那些可运行的线程。线程要么在睡眠状态(blocked 正在等待 IO)要么在可运行状态,若是 CPU 当前负载过高而新的请求不断,就会出现进程调度暂时应付不过来的状况,这个时候就不得不把线程暂时放到可运行队列里。高并发
能够从如下几个方面监控CPU的信息:工具
一般咱们指望咱们的系统能到达如下目标:性能
(1)CPU 利用率,若是 CPU 有 100% 利用率,那么应该到达这样一个平衡:65%-70% User Time,30%-35% System Time,0%-5% Idle Time;spa
(2)上下文切换,上下文切换应该和 CPU 利用率联系起来看,若是能保持上面的 CPU 利用率平衡,大量的上下文切换是能够接受的;
(3)可运行队列,每一个可运行队列不该该有超过1-3个线程(每处理器),好比:双处理器系统的可运行队列里不该该超过6个线程。
vmstat 是个查看系统总体性能的小工具,小巧、即便在很 heavy 的状况下也运行良好,而且能够用时间间隔采集获得连续的性能数据。
$ vmstat 1 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ r b swpd free buff cache si so bi bo in cs us sy id wa st 2 1 140 2787980 336304 3531996 0 0 0 128 1166 5033 3 3 70 25 0 0 1 140 2788296 336304 3531996 0 0 0 0 1194 5605 3 3 69 25 0 0 1 140 2788436 336304 3531996 0 0 0 0 1249 8036 5 4 67 25 0 0 1 140 2782688 336304 3531996 0 0 0 0 1333 7792 6 6 64 25 0 3 1 140 2779292 336304 3531992 0 0 0 28 1323 7087 4 5 67 25 0 参数介绍: (1). r,可运行队列的线程数,这些线程都是可运行状态,只不过 CPU 暂时不可用; (2). b,被 blocked 的进程数,正在等待 IO 请求; (3). in,被处理过的中断数 (4). cs,系统上正在作上下文切换的数目 (5). us,用户占用 CPU 的百分比 (6). sys,内核和中断占用 CPU 的百分比 (7). wa,全部可运行的线程被 blocked 之后都在等待 IO,这时候 CPU 空闲的百分比 (8). id,CPU 彻底空闲的百分比