[root@localhost ~]# vmstat -n 3 (每个3秒刷新一次) procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 1 0 144 186164 105252 2386848 0 0 18 166 83 2 48 21 31 0 2 0 144 189620 105252 2386848 0 0 0 177 1039 1210 34 10 56 0 0 0 144 214324 105252 2386848 0 0 0 10 1071 670 32 5 63 0 0 0 144 202212 105252 2386848 0 0 0 189 1035 558 20 3 77 0 2 0 144 158772 105252 2386848 0 0 0 203 1065 2832 70 14 15 0
vmstat所带参数请用man vmstat查看
Procs r: 等待运行的进程数 b: 处在非中断睡眠状态的进程数 w: 被交换出去的可运行的进程数。此数由 linux 计算得出,但 linux 并不耗尽交换空间
Memory swpd: 虚拟内存使用情况,单位:KB free: 空闲的内存,单位KB buff: 被用来做为缓存的内存数,单位:KB
Swap si: 从磁盘交换到内存的交换页数量,单位:KB/秒 so: 从内存交换到磁盘的交换页数量,单位:KB/秒
IO bi: 发送到块设备的块数,单位:块/秒 bo: 从块设备接收到的块数,单位:块/秒 System in: 每秒的中断数,包括时钟中断 cs: 每秒的环境(上下文)切换次数
CPU 按 CPU 的总使用百分比来显示 us: CPU 使用时间 sy: CPU 系统使用时间 id: 闲置时间
wa: 等待输入输出使用时间
准测 r,b≈0, 如果fre,将会出现连续不断的页面调度,将导致系统性能问题。 对于page列,re,pi,po,cy维持于比较稳定的状态,PI率不超过5,如果有pagin发生,那么关联页面必须先进行pageout 在内存相对紧张的环境下pagein会强制对不同的页面进行steal操作。如果系统正在读一个大批的永久页面,你也许可以看到po和pi列 会出现不一致的增长,这种情景并不一定表明系统负载过重,但是有必要对应用程序的数据访问模式进行见检查。在稳定的情况下,扫描率和重置率几乎相等,在多个进程处理使用不同的页面的情况下,页面会更加不稳定和杂乱,这时扫描率可能会比重置率高出。 faults列,in,sy,cs会不断跳跃,这里没有明确的限制,唯一的就是这些值最少大于100 cpu列,us,sys,id和wa也是不确定的,最理想的状态是使cpu处于100%工作状态,单这只适合单用户的情况下。 如果在多用户环境中us+sys》80,进程就会在运行队列中花费等待时间,响应时间和吞吐量就会下降。wa>40表明磁盘io没有也许存在不合理的平衡,或者对磁盘操作比较频繁。
举个例子吧,下面是两台逻辑srv打印出的结果,大概每秒1500次请求。
第二台机与第一台相比,wa和b字段远大于0,说明进程在等待输入输出而被中断, 且swpd 和 si so也远大于0说明内存已经不够用使用到了交换分区,出现这种情况有两个可能:
1. 进程不停被换入换出,系统处理能力下降。与第一台机相关,第一台机启动了30个进程,第二台机启动了100个进程,因此当请求量较高或进程处理有堵塞情况时,第二台机可以接入3倍的请求,但进程处理时延较长,在不停切换,处理能力下降很快,解决这种问题只需调整进程数到合适的值即可。
2. 内存泄漏。通过top可以查看,占用大内存的进程RES字段值是否正常,如果远大于经验值,并且重启后还会持续上升而不会趋于稳定,则说明存在内存泄漏。
procs -----------memory---------- ---swap-- -----io---- -system-- -----cpu------ r b swpd free buff cache si so bi bo in cs us sy id wa st 3 0 0 2237768 465264 3358896 0 0 0 1 1 2 8 8 83 1 0 0 0 0 2237644 465264 3358896 0 0 0 12 15553 24362 3 4 92 0 0 19 0 0 2237036 465264 3358896 0 0 0 244 15738 24381 5 3 91 1 0 7 0 0 2237160 465264 3358896 0 0 0 0 15361 25149 3 4 93 0 0 0 0 0 2237284 465264 3358896 0 0 0 8 15843 24949 4 4 92 0 0 2 0 0 2237408 465264 3358896 0 0 0 0 15665 25629 5 3 93 0 0
procs -----------memory---------- ---swap-- -----io---- -system-- -----cpu------ r b swpd free buff cache si so bi bo in cs us sy id wa st 27 21 1052252 5415680 7308 29892 1 1 1 1 0 0 8 8 82 2 0 30 22 1052252 5414936 7308 30276 644 0 644 8 15045 27172 4 3 52 40 0 19 22 1052252 5414440 7328 29640 616 0 620 176 15259 26953 4 3 42 50 0 3 21 1052252 5413696 7340 30084 572 0 572 32 15385 26809 3 3 45 48 0 0 21 1052252 5413216 7340 29412 672 0 672 0 15105 26989 4 3 30 63 0
最终,结合top的结果分析是内存泄漏的原因,这里可以看出利用vmstat定位系统问题是很方便的.