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的参数,来达到更细致的监控要求。

相关推荐