监控OS
操作系统的资源监控,是从大的颗粒度来分析系统的性能。通过操作系统这
种颗粒度来分析系统,是必不可少的。
1.1.1.1.1 CPU占用率
特点:
如果等待的进程过多,长期超过CPU个数的两倍;
如果空闲时间(cpu id)持续为0并且系统时间(cpu sy)是用户时间的两倍(cpu us)系统则面临着CPU资源的短缺
1.1.1.1.1.1 经验分析
由于多核CPU、多颗CPU的机型逐渐成为主流,因此对于CPU的监控,除了要收集整体的CPU占用率外,还要注意对多核或多颗CPU的状况进行监控。
使用传统的监控命令仅能对CPU的整体使用情况进行统计,例如:Linux/Unix下使用top、sar或vmstat之类的命令来查看整体占用率。
而对于多核、多颗CPU的状态需要mpstat这样的命令来查看,在实际的性能测试中,这是非常有意义的,整体CPU的占用率似乎正常,例如占用率是40~50%,但实际上分别去查看时,可能发现有近半数的CPU处于100%的忙碌状态,而其它的CPU则处于完全的空闲状态,这种情况意味着被测试模块的服务线程/进程配置的不够多,造成服务线程/进程已经处于负担较重的忙碌状态,而性能得不到提升,甚至出现待处理的业务或待处理的消息处于排队状态,当重新配置线程/进程数后,使得更多的CPU得到利用,处理能力得到大幅提升。
除了观察CPU的占用率或空闲率外,对CPU的用户态(User Time)和核心态(System Time)的信息也同样要进行记录和分析,过高的用户态或过高的核心态都意味着不正常的状态,需要根据特定的环境仔细去分析。
1.1.1.1.1.2 vmstat
特点:等待进程过多(大于4),空闲CPU太少(少于40)
1.)如果在processes中运行的序列(process r)是连续的大于在系统中的CPU的个数表示系统现在运行比较慢,有多数的进程等待CPU.
2.)如果r的输出数大于系统中可用CPU个数的4倍的话,则系统面临着CPU短缺的问题,或者是CPU的速率过低,系统中有多数的进程在等待CPU,造成系统中进程运行过慢.
3.)如果空闲时间(cpu id)持续为0并且系统时间(cpu sy)是用户时间的两倍(cpu us)系统则面临着CPU资源的短缺.
1.1.1.1.1.3 top
可以检查各个进程CPU的占用情况
1.1.1.1.1.4 mpstat
l 命令说明
用途:收集和显示系统中所有逻辑CPU的性能统计信息。特别是用于收集多核CPU信息
语法:mpstat [ { -d | -i | -s | -a } ] [ -w ] [ interval [ count ] ]
描述:mpstat命令收集和显示系统中所有逻辑CPU的性能统计信息。用户既可以定义统计信息显示的次数,也可以定义数据更新的时间间隔。调用mpstat命令时,它显示两部分的统计信息。第一部分显示系统配置,在命令开始执行时以及只要系统配置发生更改时显示。第二部分显示使用率统计数据,每隔一定时间间隔显示,并且只要度量值与上一时间间隔有变化便会重新显示。
l 例子
ash-2.03$ mpstat 2
CPU minf mjf xcal intr ithr csw icsw migr smtx srw syscl usr sys wt idl
0 24 0 16 269 167 132 0 12 2 0 223 1 0 1 97
1 24 0 16 5 1 106 1 12 1 0 214 1 2 1 95
CPU minf mjf xcal intr ithr csw icsw migr smtx srw syscl usr sys wt idl
0 1258 0 599 427 320 261 15 34 15 0 1302 6 11 13 70
1 1578 0 446 19 1 278 11 35 16 0 1595 8 12 11 69
CPU minf mjf xcal intr ithr csw icsw migr smtx srw syscl usr sys wt idl
0 1889 0 322 368 261 261 11 39 12 0 1610 4 12 5 78
1 2742 0 427 19 1 245 11 38 11 0 2259 11 7 3 78
监控CPU的各类手段
命令、脚本、程序等
操作系统命令
top、sar、vmstat等
应对多核的挑战
mpstat等
1.1.1.1.2 Memory情况
特点:防止内存泄漏;
如果某个进程内存占用很高,而且不断增长,有可能泄漏;
如果内存的占用率比较高,但是,CPU的占用很低,考虑程序内存占用没有释放
Java可以考虑监控各个区的情况,fullgc的情况
l Top
检查进程占内存大小,进程代码大小,占内存是否一直增长
l vmstat
总体和个体的情况:防止内存泄漏的发生
操作系统内存管理
1.1.1.1.3 IO情况
特点:假如系统的物理内存用光了,您的系统就会跑得慢,但仍能运行;
假如Swap空间用光了,那么系统就会发生错误,报内存溢出。
如果磁盘性能低,IO的时间很长,导致其他进程阻塞。
解决的方法:
增加内存,可以减少swap,提供速度;
增加swap,可以避免内存溢出;
把文件系统挂在不同的盘上,充分利用并行IO,可以提供r/w性能;
更换高性能磁盘控制器
诊断方法:
1.1.1.1.3.1 iostat –xtc
iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。
l iostat的语法
iostat [ -c | -d ] [ -k ] [ -t ] [ -V ] [ -x [ device ] ] [ interval [ count ] ]
其中,-c为汇报CPU的使用情况;
-d为汇报磁盘的使用情况;
-k表示每秒按kilobytes字节显示数据;
-t为打印汇报的时间;
-v表示打印出版本信息和用法;
-x device指定要统计的设备名称,默认为所有的设备;
interval指每次统计间隔的时间;count指按照这个时间间隔统计的次数。
l 经验分析
如果磁盘显示长时间的高reads/writes,
并且磁盘的percentage busy (%b)也远大于5%,
同时average service time (svc_t)也远大于30 milliseconds,
监控IO Wait
l 例如:
l Iostat 1
tty sd6 ssd0 ssd1 nfs1 cpu
tin tout kps tps serv kps tps serv kps tps serv kps tps serv us sy wt id
0 2 0 0 0 44 5 9 1 0 89 0 0 0 2 1 1 96
0 234 0 0 0 8 1 9 0 0 0 0 0 0 8 12 0 79
0 80 0 0 0 48 6 6 0 0 0 0 0 0 19 30 0 50
0 80 0 0 0 161 21 31 240 30 74 0 0 0 1 18 2 78
0 80 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100
0 81 0 0 0 88 10 4 0 0 0 0 0 0 6 9 1 84
0 80 0 0 0 16 2 6 0 0 0 0 0 0 24 24 0 52
设备类型 字段名 说明
终端 设备类型
tin 终端输入队列中的字符数
tout 终端输出队列中的字符数
磁盘 设备类型
bps 每秒块数
tps 每秒事务数
serv平均服务时间,以毫秒为单位
CPU设备类型
us 在用户模式下
sy 在系统模式下
<