集群监控指标(一)

来源:互联网 发布:软件怎么root 编辑:程序博客网 时间:2024/05/17 22:16

系统运行的繁忙程度、健康状态,反映在一系列的运行期指标上,不管是CPU负载过高,磁盘I/O过于频繁,或者内存使用过多,导致频繁Full GC,抑或是请求gqs过高,系统不堪重负,或网络过于繁忙、丢包率上升等情况。

1、load

在linux系统中,可以通过top和uptime命令来查看系统的load值。

系统的load被定义为特定时间间隔内运行队列中的平均线程数,如果一个线程满足以下条件,该线程就会处于运行队列中:

1、没有处于I/O等待状态

2、没有主动进入等待状态,也就是没有调用wait操作;

3、没有被终止。

 每个CPU的核都维护了一个运行队列,系统的load主要由运行队列来决定。假设一个CPU有8个核,运行的应用程序启动了16个线程,并且这16个线程都处于运行状态,那么每个cpu就是2个线程在运行,假设这种情况维持了1分钟,那么这1分钟的系统load值就是2.

load值越大,就意味着系统的cpu越繁忙,这样线程运行完以后等待操作系统分配下一个时间片段的时间也就越长。一般来说,只要每个cpu的活动线程数不大于3,我们认为它的负载是正常的,如果每个cpu的线程数大于5,则表示当前系统的负载已经非常高了,要想办法降低负载,以便影响系统的响应速度。

使用uptime查看系统的load:

uptime
 03:37:27 up 34 days, 17:11,  2 users,  load average: 0.00, 0.01, 0.05

load average后面跟的三个值分别表示过去1分钟,5分钟,15分钟内系统的load值。

2、cpu利用率

可以通过top命令来查看Linux系统的cpu消耗情况:top | grep Cpu

[ec2-user@ip-172-31-17-239 ~]$ top | grep Cpu
Cpu(s):  0.0%us,  0.3%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu(s):  0.3%us,  0.0%sy,  0.0%ni, 99.3%id,  0.0%wa,  0.3%hi,  0.0%si,  0.0%st
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
各个列的含义:us(user time),表示cpu执行用户进程所占用的时间,通常情况下希望us的占比越高越好

sy(system time)即sy所对应的列,表示cpu在内核状态所花费的时间,sy的占比较高,通常意味着系统在某些方面设计的不合理,比如频繁的系统调用导致的用户态与内核态的频繁切换。

ni(nice time)表示系统在调整进程优先级的时候所花费的时间。

id(idle time)表示能够处于空闲期,等待进程进行,这个过程所占用的时间。当然,我们希望id的占比越低越好。

wa(wait time)表示cpu在等待I/O操作所花费的时间,系统不应花费大量的时间来进行等待,否则便表示可能有某个地方设计不合理。

hi(hard ira time)表示系统处理硬件中断所占用的时间。

si(soft irq time)表示系统处理软件中断所占用的时间。

st(steal time)是在硬件虚拟化开始流行后操作系统新增的一列,表示被强制等待虚拟cpu的时间,此时hypervisor正在为另一个虚拟处理器服务。如果st占比较高,则表示当前虚拟机与该宿主上的其他虚拟机间的cpu争用较为频繁。

 

对于多个或者多核cpu的情况,常常需要查看每个cpu的利用情况,此时可以按1,便可以查看到每个核cpu的利用率:

Cpu0  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu0  :  0.7%us,  0.0%sy,  0.0%ni, 99.3%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu0  :  0.0%us,  0.0%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.3%si,  0.0%st

 

默认情况下top是按照进程来显示cpu的消耗情况的,按shift+H,可以按照线程来查看cpu的消耗情况,这一点对于java来说很有用。


[ec2-user@ip-172-31-17-239 ~]$ top -p 7028
top - 14:17:32 up 87 days,  3:51,  1 user,  load average: 0.00, 0.01, 0.05
Tasks:  12 total,   0 running,  12 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:    606920k total,   566432k used,    40488k free,   138404k buffers
Swap:        0k total,        0k used,        0k free,   161496k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 7042 root      20   0 1218m 110m 5912 S 99.9 18.7  16:27.69 java
 7028 root      20   0 1218m 110m 5912 S  0.0 18.7   0:00.00 java
 7029 root      20   0 1218m 110m 5912 S  0.0 18.7   0:01.28 java
 7031 root      20   0 1218m 110m 5912 S  0.0 18.7   1:30.82 java
 7032 root      20   0 1218m 110m 5912 S  0.0 18.7   0:00.03 java

-p选项可以指定查看的进程。

0 0
原创粉丝点击