linux-监控
----------iostat ------------------
iostat -d -k -x 2 100
rrqm/s:每秒这个设备相关的读取请求有多少被Merge了(当系统调用需要读取数据的 时候,VFS将请求发到各个FS,如果FS发现不同的读取请求读取的是相同Block的数据,FS会将这个请求合并Merge);wrqm/s:每秒这个 设备相关的写入请求有多少被Merge了。
r/s:每秒响应的读取请求数;w/s:每秒响应的写入请求数;rkB/s:每秒读取的数据量;wkB/s:每秒写入的数据量
await:每一个IO请求的处理的平均时间(单位是微秒)。这里可以理解为IO的响应时 间,一般地系统IO响应时间应该低于5ms,如果大于10ms就比较大了。
%util:在统计时间内所有处理IO时间,除以总共统计时间。例如,如果统计 间隔1秒,该 设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的%util = 0.8/1 = 80%,所以该参数暗示了设备的繁忙程度。一般地,如果该参数是100%表示设备已经接近满负荷运行了(当然如果是多磁盘,即使%util是100%,因 为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。
------------------TOP--------------------
由于Oracle大多运行在Linux系统下,所以了解一些相关知识还是很有必要的,本文将主要梳理汇总在Linux性能监控方面常用到的一些命令。
TOP
TOP命令提供了对系统处理器的实时状态监视信息,它会显示CPU使用量、内存使用量、交换内存、缓存大小、缓冲区大小、流程PID、用户、命令等。
TOP信息可以分为两部分,光标上面部份显示关于系统整体性能,光标下面部份显示各进程信息,光标所在处是用来输入操作命令的。
系统整体性能统计信息
第一行:top - 12:38:33 up 50 days, 23:15, 7 users, load average: 60.58, 61.14, 61.22
详解(基础信息):
12:38:33(系统当前时间)、up 50 days(系统开机至今时间)、7 users(当前登录系统用户数)、load average: 60.58, 61.14, 61.22(系统1、5、15分钟平均活跃进程数,如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了)。
第二行:Tasks: 203 total, 60 running, 139 sleeping, 4 stopped, 0 zombie
详解(进程信息):
203 total(系统当前进程数)、60 running(运行中进程数)、139 sleeping(休眠进程数)、4 stopped(停止进程数)、0 zombie(僵尸进程数)。
第三行:Cpu(s) : 27.0%us, 33.0%sy, 0.0%ni, 40.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
详解(CPU信息):
27.0%us(用户空间占用CPU的百分比)、33.0%sy(内核空间占用CPU的百分比)、0.0%ni(改变过优先级的进程占用CPU的百分比)、40.0%id(空闲CPU百分比)、0.0%wa(IO等待占用CPU的百分比)、0.0%hi(硬中断占用CPU的百分比)、0.0%si(软中断占用CPU的百分比)、0.0%st(不知道)。
第四行:Mem: 1939780k total, 1375280k used, 564500k free, 109680k buffers
详解(内存信息):
1939780k total(物理内存总量)、1375280k used(已用物理内存量)、564500k free(空闲物理内存量)、109680k buffers(用于内核缓存的物理内存量)。
第五行:Swap: 4401800k total, 497456k used, 3904344k free, 848712k cached
详解(交换分区):
4401800k total(交换区总量)、497456k used(已用交换区总量)、3904344k free(空闲交换区总量)848712k cached(缓冲的交换区总量)。
交换分区类似于Windows的虚拟内存,就是当内存不足的时候,把一部分硬盘空间虚拟成内存使用,从而解决内存容量不足的情况。缓冲交换区cached作用原理为,内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换区写入。
第四行中使用中的内存总量(used)指的是现在系统内核控制的内存数,空闲内存总量(free)是内核还未纳入其管控范围的数量。纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心。如果出于习惯去计算可用内存数,这里有个近似的计算公式:第四行的free+第四行的buffers+第五行的cached。对于内存监控,在top里我们要时刻监控第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。
进程信息
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4338 oracle 25 0 627m 209m 207m R 0 11.0 297:14.76 oracle
详解:
PID(进程ID)、USER(进程所有者)、PR(优先级)、NI(nice值,负值表示高优先级,正值表示低优先级)、VIRT(进程占用的虚拟内存总量,单位kb)、RES(进程占用的物理内存)、SHR(进程使用的共享内存)、S(进程状态,D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程)、%CPU(上次更新到现在的CPU时间占用百分比)、%MEM(进程使用的物理内存百分比)、TIME+(进程使用的CPU时间总计,单位1/100秒)、COMMAND(进程名称,命令名或命令行)。
进程信息排序:
默认进入top时,各进程是按照CPU的占用量来排序的。可以通过键盘指令改变排序字段,b(行加亮效果打开/关闭)、x(列加亮效果打开/关闭)、shift + >或shift + <(向右或左改变排序列)。
控制进程信息显示字段:
敲击f键,进入显示字段编辑视图,进程字段前有*且前标字母是大写的表示已显示的,没有*且小写的是未显示的,可以通过敲击进程前标字母来控制字段是否显示。
交互命令
q:退出top命令
<Space>:立即刷新
o:改变列显示顺序,按小写的a-z可以将相应的列向右移动,而大写的A-Z可以将相应的列向左移动,最后按回车键确定。按大写的F或O键,然后按a-z可以将进程按照相应的列进行排序,而大写的R键可以将当前的排序倒转,设置完按回车返回界面。
c:显示命令完全模式
t:显示或隐藏进程和CPU状态信息
m:显示或隐藏内存状态信息
l:显示或隐藏uptime信息
f:增加或减少进程显示标志
S:累计模式,会把已完成或退出的子进程占用的CPU时间累计到父进程的MITE+
s:设置刷新时间间隔
P:按%CPU使用率排行
T:按TIME+排行
M:按%MEM排行
u:指定显示用户进程
r:修改进程renice值
k:终止一个进程
i:只显示正在运行的进程,忽略闲置或僵死进程
W:保存对top的设置到文件~/.toprc,下次启动将自动调用toprc文件的设置。
h:帮助命令。
top命令是Linux上进行系统监控的首选命令,但有时候却达不到我们的要求,可以用ps和netstate两个命令来补充top的不足。
监控java线程数:
ps -eLf | grep java | wc -l
监控网络客户连接数:
netstat -n | grep tcp | grep 侦听端口 | wc -l
上面两个命令,可改动grep的参数,来达到更细致的监控要求。