linux服务器监控

1.load

load为特定时间间隔内运行队列中平均线程数。load average后面三个值代表1、5、15分钟系统的load值,如果每个cpu的线程数大于5,表示系统负载较高,需采取措施降低负载,加快系统响应速度。

$ uptime  
10:36:46 up 207 days, 17:55,  1 user,  load average: 0.45, 0.75, 0.85 

2.CPU利用率

CPU的时间消耗主要在如下几方面:用户进程、内核进程、中断处理、I/O等待、Nice时间、丢失时间、空闲等部分。CPU的利用率为这些时间所占总时间的百分比。通过CPU利用率,反映CPU的使用和消耗情况。

$ top | grep Cpu  
%Cpu(s):  4.0 us,  0.3 sy,  0.0 ni, 95.1 id,  0.5 wa,  0.0 hi,  0.0 si,  0.1 st  
%Cpu(s): 16.4 us,  1.3 sy,  0.0 ni, 80.6 id,  1.3 wa,  0.0 hi,  0.2 si,  0.2 st  
%Cpu(s): 20.7 us,  1.5 sy,  0.0 ni, 75.0 id,  2.5 wa,  0.0 hi,  0.1 si,  0.2 st  
%Cpu(s): 21.7 us,  2.1 sy,  0.0 ni, 75.6 id,  0.4 wa,  0.0 hi,  0.1 si,  0.2 st  
%Cpu(s): 16.9 us,  1.3 sy,  0.0 ni, 80.9 id,  0.5 wa,  0.0 hi,  0.3 si,  0.2 st

us:用户时间(user time),表示cpu执行用户进程所占用的时间比,通常情况希望us的占比越高越好。

sy:系统时间(system time),表示cpu内核态所花费的时间,sy的占比较高意味着系统在某些方面设计的不合理。

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

id:空闲时间(idle time),表示系统处于空闲期,等待系统进程运行这个过程所占用的时间。id的占比越低越好。

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

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

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

st:丢失时间(steal time),表示被强制等待虚拟cpu的时间。如果占比较高,表示当前虚拟机与该宿主上其他虚拟机间的cpu争用较为频繁。


多个或多核cpu的服务器,查看每个cpu的使用情况,top命令后按1,可查看每个cpu利用率:

$ top   
top - 11:04:17 up 207 days, 18:22,  2 users,  load average: 1.75, 1.61, 1.25  
Tasks: 153 total,   1 running, 152 sleeping,   0 stopped,   0 zombie  
%Cpu0  :  7.1 us,  0.7 sy,  0.0 ni, 89.2 id,  2.4 wa,  0.0 hi,  0.3 si,  0.3 st  
%Cpu1  : 15.2 us,  0.3 sy,  0.0 ni, 84.5 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st  
%Cpu2  :  5.7 us,  0.3 sy,  0.0 ni, 93.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st  
%Cpu3  :  3.4 us,  0.7 sy,  0.0 ni, 95.3 id,  0.3 wa,  0.0 hi,  0.3 si,  0.0 st  
KiB Mem:  16006448 total, 15822004 used,   184444 free,   286124 buffers  
KiB Swap:        0 total,        0 used,        0 free.  4554820 cached Mem  

默认情况下top是按进程来显示cpu消耗情况,按shift+h,可以按照线程来查看cpu消耗情况,对于java应用非常有效。

-p 可以指定查看的进程: 

$ top -p 21146  
top - 11:10:55 up 207 days, 18:29,  2 users,  load average: 2.65, 2.04, 1.57  
Tasks:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie  
%Cpu(s): 38.4 us, 44.3 sy,  0.0 ni, 15.9 id,  0.4 wa,  0.1 hi,  0.4 si,  0.4 st  
KiB Mem:  16006448 total, 15786216 used,   220232 free,   287160 buffers  
KiB Swap:        0 total,        0 used,        0 free.  4508536 cached Mem  
  
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                           
21146 root      20   0 6774296 2.293g   9140 S   7.0 15.0  83:02.28 java 

3.磁盘剩余空间

df命令查看磁盘的剩余空间:

$ df -h  
Filesystem                                             Size  Used Avail Use% Mounted on  
/dev/xvda1                                              20G  9.0G  9.6G  49% /  
devtmpfs                                               7.8G     0  7.8G   0% /dev  
tmpfs                                                  7.7G     0  7.7G   0% /dev/shm  

-h 表示按单位格式化输出。


du用来查看具体目录所占用的空间:

$ du -d 1 -h /data/  
6.1G    /data/riskimage  
41M     /data/risk-star  
112M    /data/source  
128M    /data/tmp  
6.3G    /data/logs  
-d 表示递归深度,1表示下一级目录 

-h 表示按文件大小单位格式化输出 


4.网络traffic

关注网络的流量同样重要,网络流量迅速上升后可能使某些应用出现网络瓶颈,所以需要了解各个节点的阈值与水平。

$ sar -n DEV 1 1  
Linux 3.10.0-123.9.3.el7.x86_64 (base01.service-inc.cn)         07/14/2016      _x86_64_        (4 CPU)  
11:21:02 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s  
11:21:03 AM      eth0    495.00    450.00     80.89     72.94      0.00      0.00      0.00  
11:21:03 AM      eth1    208.00    210.00     13.39    410.32      0.00      0.00      0.00  
11:21:03 AM        lo    258.00    258.00     85.41     85.41      0.00      0.00      0.00  
  
Average:        IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s  
Average:         eth0    495.00    450.00     80.89     72.94      0.00      0.00      0.00  
Average:         eth1    208.00    210.00     13.39    410.32      0.00      0.00      0.00  
Average:           lo    258.00    258.00     85.41     85.41      0.00      0.00      0.00  
-n 表示汇报网络的状况,DEV表示查看各个网卡的网络流量,第一个1表示每一秒抽样一次,第二个1表示总共取一次。

lo:表示本地回环网络 

eth0、eth1:表示网卡 

rxpck/s:每秒接收的数据包数量 

txpck/s:每秒发出的数据包数量 

rxkB/s:每秒接收到的字节数(KB) 

txkB/s:每秒发送的字节数(KB) 

rxcmp/s:每秒接收到的压缩包数量 

txcmp/s:每秒发送的压缩包数量 

rxmcst/s:每秒收到的广播包数量 

Average:多次取样的平均值 


5.磁盘I/O

       磁盘I/O的繁忙度也是一个重要的系统指标。对于I/O密集型的应用来说,比如数据库应用和分布式文件系统等,I/O的繁忙程度也一定程度的反映了系统的负载情况,容易成为应用性能的瓶颈。

$ iostat -d -k  
Linux 3.10.0-123.9.3.el7.x86_64 (base01.service.cn)         07/14/2016      _x86_64_        (4 CPU)  
Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn  
xvda              1.28         0.86        15.90   15436649  285375444  
xvdb             13.08        43.97       143.90  789478293 2583453348  
-d 表示查看磁盘使用情况 

-k 表示以KB为单位显示 


device:表示设备名称 

tps:每秒处理的I/O请求数 

kB_read/s:每秒从设备读取的数据量 

kB_wrtn/s:每秒向设备写入的数据量 

kB_read:读取的数据总量 

kB_wrtn:写入的数据总量 


程序运行时的数据加载、线程并发、I/O缓冲等,都依赖于内存,可用内存的大小决定了程序是否能正常运行以及运行的性能。

$ free -m  
             total       used       free     shared    buffers     cached  
Mem:         15631      12998       2632        274        290       1858  
-/+ buffers/cache:      10849       4781  
Swap:            0          0          0  
-m 表示以MB为单位 

total:内存总共大小 

used:已使用内存大小 

free:可使用内存大小 

shared:多个进程共享的内存大小 

buffers:缓冲区的大小 

cached:缓存的大小 

swap:虚拟内存的消耗,total为0代表无虚拟内存。有的话,需要注意虚拟内存的使用,使用过多代表物理内存已经不够。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章