日常运维w,vmstat,top,sar,nload

10.1-10.9 日常运维w,vmstat,top,sar,nload, io, free, ps, 网络状态

w

w命令用于查看当前系统负载。

主要检查的指标是load average,这里有三个数字,分别是1分钟,5分钟,和15分钟内的系统平均负载。一般着重看第一个数字,如果值不超过物理cpu的数量,那么就说明当前服务器没有压力。如果超过了cpu数量,那就说明需要注意一下服务器的负载。

[root@centos-01 ~]# w
 10:39:36 up 18 min,  2 users,  load average: 0.00, 0.03, 0.12
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
lxd      tty1                      10:22    8:00   0.38s  0.49s login -- lxd     
root     pts/0    192.168.27.1     10:22    0.00s  0.22s  0.05s w

可以通过命令cat /etc/cpuinfo查看系统的cpu数量。

下表显示,系统有一个物理cpu,但是共有4个核。

这里的processor计数从0开始,也就是说第一个显示为0,第二个显示为1。

[root@centos-01 ~]# cat /proc/cpuinfo
processor   : 0
vendor_id   : GenuineIntel
cpu family  : 6
model       : 58
model name  : Intel(R) Core(TM) i7-3612QM CPU @ 2.10GHz
stepping    : 8
microcode   : 0x10
cpu MHz     : 2095.250
cache size  : 6144 KB
physical id : 0
siblings    : 4
core id     : 0
cpu cores   : 4
apicid      : 0
initial apicid  : 0
fpu     : yes
fpu_exception   : yes
cpuid level : 13
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf eagerfpu pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt xsave avx f16c rdrand hypervisor lahf_lm ida arat epb pln pts dtherm fsgsbase smep xsaveopt
bogomips    : 4190.50
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

vmstat

vmstat命令可以报告系统各个模块的负载情况,让我们知道系统的资源使用情况以及系统瓶颈在哪里。

vmstat指的是virtual memory statistic,虚拟内存统计。


[root@centos-01 ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
1  0     0 1961292   1056 250400    0    0    26     1   50   46  0  1 98  0  0

首先我们要解释物理cpu,逻辑cpu,线程的区别。

物理cpu指的是电脑上安装了几个cpu硬件,对于pc来说都只有一个物理cpu。

然而现在都是多核cpu,Linux系统理解的cpu数量实际是物理cpu数量*每颗cpu的核数*每个核的线程数。如果电脑安装了1个4核cpu,每个核都有2个线程,linux则认为系统共有8颗cpu。这8颗cpu也可以被称为逻辑cpu。

http://www.daniloaz.com/en/differences-between-physical-cpu-vs-logical-cpu-vs-core-vs-thread-vs-socket/

procs

  • r 表示running,正在运行,或者正在等待cpu运行时的进程数。这两种进程都可以认为是他们正在运行中,而不是在等待。如果r大于cpu数量,则说明cpu出现瓶颈。
  • b表示blocked queue,那些在虚拟内存中等待磁盘IO资源的进程数。这个值太高的话说明磁盘慢。一般来说,r应该大于b,否则说明cpu性能不够。

memory

  • swpd表示swapped,切换到交换分区中的内存数量,即虚拟内存的使用量。
  • free表示空闲内存
  • buff表示buffer的用量,即即将写入磁盘的数量
  • cache表示cache的用量,即即将从磁盘读取的数量

swap

  • si,swapped in from swap space,从交换分区写入到内存的数量
  • so,swapped out to swap space,从内存写入到交换分区的数量

IO

  • bi,block input from block device,从块设备写入的数据量
  • bo,block output to block device,写入到块设备的数据量

system

  • in,interrupted per second,每秒设备被打断的次数
  • cs,context switch,每秒钟上下文切换次数。cs太高说明内存不够用

cpu

  • us用户占用的cpu百分比
  • sy系统占用的cpu百分比
  • id表示cpu空闲的百分比
  • wa,waiting for IO,表示cpu等待IO所占用的时间百分比
  • st表示被偷走的cpu百分比

需要关注的主要是r,b,wa。bi和bo如果较大,说明磁盘的IO压力大。si和so如果较大,说明内存不够用。

通常vmstat的使用方式如下:

vmstat 1 5 //表示每间隔1秒输出一次,共输出5次。

top

top可以对线程按占用的系统资源进行排序。同时也可以yum安装htop获得同样的工具,但是更直观。

Tasks: 131 total,   1 running, 130 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.1 us,  0.3 sy,  0.0 ni, 99.6 id,  0.0 wa,  0.0 hi,  0.1 si,  0.0 st
KiB Mem :  2834208 total,  1941292 free,   629028 used,   263888 buff/cache
KiB Swap:  4120568 total,  4120568 free,        0 used.  2010628 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                         
 1288 mysql     20   0 1302880 458308   5884 S   1.0 16.2   0:53.46 mysqld                                                          
  315 root      20   0       0      0      0 S   0.7  0.0   0:03.34 xfsaild/sda3                                                    
  550 root      20   0  303080   6284   4832 S   0.7  0.2   0:29.39 vmtoolsd                                                        
 3713 root      20   0  122500   2164   1456 S   0.7  0.1   0:00.61 htop                                                            
    9 root      20   0       0      0      0 S   0.3  0.0   0:06.03 rcu_sched       

和vmstat一样,我们需要关注的值有load average,tasks,%CPU,%MEM。RES表示进程占用的内存数量,resident memory size。

shift+m表示按内存使用量排序,shift+p表示按cpu使用量排序。按数字1可以列出每个cpu的占用量,按q退出。

sar

sar命令很强大,几乎可以监控系统所有的资源。被戏称为瑞士军刀。
可以使用yum安装sysstat获得。

查看网卡流量
sar -n DEV

[root@centos-01 ~]# sar -n DEV
Linux 3.10.0-514.el7.x86_64 (centos-01)     201711月08日     _x86_64_    (4 CPU)

09时4001IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
09时5002秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
09时5002秒     ens33    838.09    103.63   1209.76      6.58      0.00      0.00      0.00
100002秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
100002秒     ens33      0.32      0.05      0.02      0.00      0.00      0.00      0.00
101001秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
101001秒     ens33      0.33      0.03      0.02      0.00      0.00      0.00      0.00
平均时间:        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间:     ens33    279.75     34.59    403.51      2.20      0.00      0.00      0.00

这个命令会打印当天的网卡信息,每隔十分钟统计一次。

我们需要关注的是rxpck/s和rxkB/s,rxpck/s如果是几千是正常的,但如果大于4000,说明服务器很可能被攻击了。如果rxkB/s大于5000000也同样说明可能被攻击了,正常的服务器网卡不会有这么高的数值。

sar -n DEV 1 5 这条命令可以实时的查看网卡流量,格式与vmstat类似。

sar -n DEV -f /var/log/sa/sa07
sar的log存在/var/log/sa/路径下,用这条命令可以查看过去某天的网卡流量信息。

sar -q 查看历史负载

nload

yum install -y epel-release  //先安装扩展源

yum install -y nload  //因为nload依赖于epel-release,所以要分别安装

安装好后,输入命令nload即可调用。

使用左右方向键可以切换不同网卡的信息。

同样,我们还可以安装iostat以及iotop查看系统资源信息。

free

free命令可以查看当前内存和虚拟内存的使用情况。

可选-h,-m,-g,表示数字的显示方式,自动或者按M和G。

total=used+free+buff/cache
available=free+buff/cache剩余部分

[root@centos-01 ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           2.7G        611M        1.9G        8.9M        260M        1.9G
Swap:          3.9G          0B        3.9G

ps

[root@centos-01 ~]# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.1  0.2 128160  6764 ?        Ss   13:42   0:11 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
root         2  0.0  0.0      0     0 ?        S    13:42   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    13:42   0:00 [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S<   13:42   0:00 [kworker/0:0H]
root         7  0.0  0.0      0     0 ?        S    13:42   0:01 [migration/0]
root         8  0.0  0.0      0     0 ?        S    13:42   0:00 [rcu_bh]
root         9  0.1  0.0      0     0 ?        S    13:42   0:12 [rcu_sched]
root        10  0.0  0.0      0     0 ?        S    13:42   0:00 [watchdog/0]
root        11  0.0  0.0      0     0 ?        S    13:42   0:00 [watchdog/1]

ps aux, a和x指的是显示所有进程,u表示显示user。

PID表示进程的ID,关进程时可以用kill PID,如果关不掉可以尝试kill -9 PID,这样有点暴力,可能会导致数据丢失,所以一般尽量不要用。

RSS和RES一样,RSS表示resident set size,是使用的非虚拟内存的物理内存的量。

STAT是进程的状态:

  • D 不能中断的进程,通常为IO (正在等待IO资源的进程,类似于vmstat中的b)
  • R 正在运行的进程
  • S已经中断的进程,同样情况下系统的大部分进程都是这个状态
  • T已经停止或者暂停的进程
  • X已经死掉的进程
  • Z僵尸进程
  • <高优先级进程
  • N低优先级进程
  • s 多线程进程
  • + 前台的进程,例如此时ps aux就是前台的进程
  • l多线程进程

netstat

netstat -lnp //打印当前系统启动了哪些端口
l,listening中的端口
p,program
n,使用ip地址显示而不是主机名

netstat -an //打印网络连接状况
a,all
n,使用ip地址显示而不是主机名

[root@centos-01 ~]# netstat -lnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd           
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      1752/dnsmasq        
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      972/sshd            
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      960/cupsd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1600/master         
tcp6       0      0 :::3306                 :::*                    LISTEN      1288/mysqld         
tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd           
tcp6       0      0 :::22                   :::*                    LISTEN      972/sshd            
tcp6       0      0 ::1:631                 :::*                    LISTEN      960/cupsd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      1600/master         
udp        0      0 127.0.0.1:323           0.0.0.0:*                           551/chronyd         
udp        0      0 0.0.0.0:5353            0.0.0.0:*                           595/avahi-daemon: r 
udp        0      0 0.0.0.0:53137           0.0.0.0:*                           595/avahi-daemon: r 
udp        0      0 192.168.122.1:53        0.0.0.0:*                           1752/dnsmasq        
udp        0      0 0.0.0.0:67              0.0.0.0:*                           1752/dnsmasq        
udp6       0      0 ::1:323                 :::*                                551/chronyd         
raw6       0      0 :::58                   :::*                    7           636/NetworkManager  
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node   PID/Program name     Path
unix  2      [ ACC ]     STREAM     LISTENING     13319    1/systemd            /run/lvm/lvmetad.socket
unix  2      [ ACC ]     STREAM     LISTENING     9494     1/systemd            /run/systemd/journal/stdout
unix  2      [ ACC ]     STREAM     LISTENING     15658    565/gssproxy         /run/gssproxy.sock
unix  2      [ ACC ]     STREAM     LISTENING     21720    1600/master          private/tlsmgr
unix  2      [ ACC ]     STREAM     LISTENING     21723    1600/master          private/rewrite
unix  2      [ ACC ]     STREAM     LISTENING     21726    1600/master          private/bounce
unix  2      [ ACC ]     STREAM     LISTENING     21729    1600/master          private/defer
unix  2      [ ACC ]     STREAM     LISTENING     21732    1600/master          private/trace
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值