2017.11.27 七周第一次课

10.1 使用w查看系统负载

[root@aminglinux-01~]# w

21:32:32 up 3:59, 1 user, load average: 0.08, 0.02, 0.01

USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT

root pts/0 192.168.247.1 21:32 0.00s 0.15s 0.09s w

第一行:时间、系统运行时间、登陆用户数、平均负载

下面的信息,告诉管理员有哪些用户登陆,登陆设备是什么,来自哪个IP,登陆时间,空闲时间,当前终端的所有进程占用的CPU时间,当前命令占用的CPU的时间。最需要关注的是第一行load average 后面的三个数值。

第一个值表示 1 分钟内系统的平均负载值,1分钟之内有多少个进程和任务在使用cpu,计算,排队等

第二个值表示 5 分钟内系统的平均负载值

第三个值表示 15分钟内系统的平均负载值

1分钟内的反应的比较真实,第一个数值比较精准的反应当前CPU的情况。

平均负载值代表单位时间段内 CPU 活动进程数。CPU在某一时刻,只能给一个任务或进程提供服务,其他的进程按优先级大小排队,然后进行CPU进行计算。值越大说明服务器压力越大。一般情况下这个值不超过 CPU 数量就没有关系。如果 CPU 数量为8,值小于8就没有问题。

如果超过了,那么最后的进程则需要排队等待处理,说明负载偏高,负载过高,就要想办法查看什么进程引起的负载高,要调整优化。top看哪个进程排在最上面,最上面的说明耗费cpu比较多,针对那个进程去优化。比如mysql占用cpu高,那么就去查看mysql的慢查询日志,看看是不是可以通过优化sql语句来提升mysql的查询效率,这样就降下来了。 如果即使调优了还是高,说明cpu不够用啦,只能增加机器扩容。

#uptime 查看系统负载

21:49:22 up 4:16, 1 user, load average: 0.00, 0.00, 0.00

返回结果,和 w 返回信息的第一行一致。

#top 也可以查看系统负载 查看服务器cpu情况

[root@aminglinux01~]# cat /proc/cpuinfo

processor : 0 processor 处理器,逻辑CPU个数0单核,1双核.......7=8核

vendor_id : GenuineIntel

cpu family : 6

model : 78

model name : Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz

stepping : 3

cpu MHz : 2400.059

cache size : 3072 KB cache 缓存

fdiv_bug : no

hlt_bug : no

f00f_bug : no

coma_bug : no

fpu : yes

fpu_exception : yes

cpuid level : 22

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 nx rdtscp constant_tsc up arch_perfmon pebs bts tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq ssse3 sse4_1 sse4_2 movbe popcnt aes hypervisor 3dnowprefetch ida arat epb xsaveopt pln pts dts

bogomips : 4800.11

clflush size : 64

cache_alignment : 64

address sizes : 40 bits physical, 48 bits virtual

power management:

/proc/cpuinfo 记录了cpu的详细信息。目前市面上的服务器很多是2颗4核cpu,在Linux看来,就是8个cpu。flags 如果有 ht 说明支持超线程技术。

    # 总核数 = 物理CPU个数 X 每颗物理CPU的核数 
    # 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数
    # 查看物理CPU个数
    cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
    # 查看每个物理CPU中core的个数(即核数)
    cat /proc/cpuinfo| grep "cpu cores"| uniq
    # 查看逻辑CPU的个数 
    cat /proc/cpuinfo| grep "processor"| wc -l

[root@aminglinux01 ~]# w 【显示两个终端登陆】

16:10:51 up 11:52, 2 users, load average: 0.00, 0.00, 0.00

USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT

root tty1 - 04:19 23:45 0.18s 0.18s -bash 【虚拟机登陆信息】

root pts/0 192.168.247.1 15:47 0.00s 0.28s 0.02s w 【远程连接工具登陆信息】

[root@aminglinux01~]# skill -9 tty1 【关闭虚拟机终端】 skill , 不是 kill

[root@aminglinux01 ~]# w

16:11:16 up 11:52, 1 user, load average: 0.00, 0.00, 0.00

USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT

root pts/0 192.168.247.1 15:47 0.00s 0.30s 0.02s w

10.2 vmstat命令

w ;uptime 可以查看系统整体负载,通过数值可以判断系统有没有压力。但是具体是哪里出了问题,cpu? 内存?磁盘?并无法给出判断。通过vmstat可以指定具体是哪里有压力。

#vmstat 1 【每间隔1秒输出一次,且一直输出,直到ctrl c 停止】

#vmstat 1 5 【每间隔1秒输出一次,一共输出5次】

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----

r b swpd free buff cache si so bi bo in cs us sy id wa st

0 0 0 1346596 21696 494320 0 0 7 31 21 15 0 1 99 0 0

0 0 0 1346588 21696 494344 0 0 0 0 25 12 0 1 99 0 0

0 0 0 1346588 21696 494344 0 0 0 4 17 18 0 1 99 0 0

0 0 0 1346588 21696 494344 0 0 0 0 17 12 0 0 100 0 0

0 0 0 1346588 21696 494344 0 0 0 0 14 10 0 0 100 0 0

r(分配几个进程) b(阻塞io阻塞)

buff(内存和磁盘写入磁盘) cache(cpu和内存读出磁盘)

si(0) so(0)

bi(in cpu) bo(out cpu)

us(进程占用cpu) wa(等待)

vmstat显示的信息分6部分。

1、procs [p'rɒk] 程序,进程

r run 1秒内运行和等待CPU时间片的进程数,这个值如果长期大于系统CPU个数,就说明CPU资源不足,可以考虑增加CPU;

b block 被阻塞的,表示等待资源的进程数,任务数据等待写入磁盘,被I/O阻塞的任务有多少,网络、磁盘、I/O都有关,这列值如果长时间大于1,需要关注一下。

2、memory 内存相关信息

swpd 切换到交换分区中的内存数量,数值不变,说明每次没问题,如果数值很大,且不断的在变更,说明内存不够,或者内存溢出。切换到内存交换区的内存数量(以KB为单位)。如果swpd的值不为0或者比较大,而且si、so的值长期为0,那么这种情况一般不用担心,不会影响系统性能;

free 当前空闲的内存数量

buff 缓冲大小,即将写入磁盘的

cache 缓存大小,从磁盘中读取的,

一般作文件系统的cached,频繁访问的文件都会被cached。如果cached值较大,就说明 cached文件数较多。如果此时IO中的bi比较小,就说明文件系统效率比较好。

3、swap 内存交换情况

si 交换分区写入内存的数据量 swap into memory

so 内存写入到交换分区的数据量 swap out of memory

没有说两个数值一直是0,或者很小很小的值,没变化,很稳定,说明内存够;如果长期大于0,而且不断的变化,说明内存不够。

4、io 磁盘使用情况

bi 从块设备读取数据的量 读磁盘 into memory

bo 从块设备写入数据的量 写磁盘 out of memory

这里设置的bi+bo参考值为1000,如果超过1000,而且wa值比较大,则表示系统磁盘IO性能瓶颈。

5、system 显示采集间隔内发生的中断次数

in 某一时间间隔中,观察到的每秒设备中断数

cs 每秒产生的上下文切换次数

CS,上下文切换属于cpu的一个范畴,简单讲就是cpu不能在同一时刻去处理多个任务,只能在一个时间点处理一个任务,但是每个任务分配的时间片是有限的,所以,任务任务1走完给它分配的时间片,就该任务2占用cpu了,这时候任务1到任务2就是上下文切换。 两列值不宜过高,平常不作为参考值。

6、CPU 显示cpu的使用状态

us user 显示用户所花费 cpu 时间的百分比,常年高于50或接近100,说明某进程占用很大的资源,需要进行优化。

sy system 显示系统花费 cpu 时间百分比

id idle ['aɪd(ə)l] 限制的,停顿的 cpu 处于空闲状态的 时间百分比

wa wait 表示I/O(网络或者磁盘)等待所占用cpu 时间百分比

st steal表示被偷走的cpu所占 时间百分比 一般为0,不用关注

us 就是我们给系统安装的一些应用、服务等耗费的cpu, sy就是系统内核自己的服务耗费的,id就是空闲的。steal这一数值,很少有不为0的情况,虚拟机里,比如现在的云主机,如果运营商把8核cpu的宿主机做了20台单核的虚拟机,那很有可能会出现这个值不为0的情况,如果出现了,就去找运营商理论。

loadaverage 和 us 要结合着一起看。loadaverage表示1分钟之内在使用或等待CPU的进程数量,vmstat中的us表示系统中的应用和服务消耗的CPU。

10.3 top命令

#top 【动态监控进程所占系统资源,每间隔3秒变一次】

top - 22:12:42 up 4:39, 1 user, load average: 0.00, 0.00, 0.00

Tasks: 79 total, 1 running, 78 sleeping, 0 stopped, 0 zombie

Cpu(s): 0.0%us, 0.3%sy, 0.0%ni, 99.3%id, 0.0%wa, 0.0%hi, 0.3%si, 0.0%st

Mem: 1938820k total, 592852k used, 1345968k free, 21888k buffers

Swap: 4194296k total, 0k used, 4194296k free, 494396k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2718 root 20 0 2568 1100 880 R 0.7 0.1 0:00.62 top

1 root      20   0  2900 1428 1216 S  0.0  0.1   0:01.67 init      

top的特点是把占用系统资源(cpu,内存,磁盘IO等)最高的进程放到最前面。

top命令打出了很多信息,包括系统负载(loadaverage),进程数,cpu使用情况以及交换分区的使用情况。

重点在下面的进程使用系统资源详细情况列表,%CPU、%MEM、COMMAND 比较重要,RES 这一项为进程所占内存大小,而%MEM表示进程使用内存百分比。输出结果%CPU列的总和可以超过100%,最高是cpu核数x100 比如,4核cpu,最高就是400% 这样cpu就算跑满了。

top 状态下,按 shift + m或者M 可按照内存使用大小排序(注意 %MEM选项),P返回。

top 状态下shift+ > 翻看下页的进程情况

top 状态下 shift + < 翻看上一页的进程情况

输入图片说明

PR和NI PR为线程优先级,范围[0, 40),实时优先级的线程显示为RT。值越小优先级越高 NI为Nice值,范围[-20, 20),PR值为初始线程优先级加上Nice值。

VIRT virtual 虚拟内存

RES reserve 物理内存使用情况

SHR share共享内存。所谓共享内存就是系统内核分配一部分内存让多个进程同时使用,目的是为了让它们之间通信方便。

S 进程状态

TIME+ 使用CPU的时间

top状态下,按数字 1 可以列出各颗 cpu 的使用状态,多核机器有效

输入图片说明

注意第三行 cpu 处的变化

输入图片说明

top状态下

h 查看帮助信息

z,B 更改显示颜色,更改粗体显示,bold粗体的

l,t,m 显示隐藏load average,task/cpu 状态,mem info

u 后面跟用户名,只显示特定的用户

n 后面跟数字,只显示一定数量的进程,0不限制

k kill进程

q 退出

c 显示详细command信息

#top -d 1 每间隔1秒刷新一次

#top -d 1 -c 没间隔1秒刷新一次,command命令显示更全面

#top -bn1 【一次性列出全部进程,非动态显示】

该用法可写在脚本中

10.4 sar命令

可以监控系统所有资源状态。平均负载、网卡流量、磁盘状态、内存使用等等。不同于其他系统状态监控工具的地方在于,它可以打印历史信息,可以显示当天从零点开始到当前时刻的系统状态信息。yum install -y sysstat 安装此命令。up

初次使用会报错,因为sar工具还没生产相应的数据库文件(实时监控就不会报错,因为不用去查询那个库文件)。数据库文件在/var/log/sa/ 目录下。

sar -n DEV #查看当天从零点到当前时间的网卡流量信息

sar -n DEV 1 10 #每秒显示一次,共显示10次

sar -n DEV -f /var/log/sa/saxx #查看xx日的网卡流量历史

sar -q #查看历史负载

sar -b #查看磁盘读写

1、查看网卡历史流量 重点掌握

#sar -n DEV

IFACE 表示设备名称

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

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

rxKB/s 每秒接收的数据量,单位KByte 1KB=1000byte=8000bit

txKB/s 每秒发出的数据量,单位KByte

若服务器丢包非常严重,需要查看网卡流量是否异常。接收数据部分 rxpck大于4000,或者rxKB大于5000,则有可能被攻击了,正常服务器网卡流量没有这么大。除非自己在拷贝数据。 计算实际速度,取 rxkb或txkb的峰值,换算成KB,比如是686KByte,然后用686*8/1000=5.4MBit

Bytes 字节,缩写为B 【电脑硬盘的最小单位】

bit 位, 1Byte=8bit 【网络中最小的单位】

bps =bit per second 每秒位数

pps =package per second 每秒数据包 Mb ,Gb,10Gb

10Gb=10000Mb 【电脑中1GB=1024MB,网络中1Gb=1000Mb】

宽带10Mb,下载速度是1.25MB,10Mb=10Mbit 10Mbit/8=1.25Mbyte=1.25MB

2、查看某一天的网卡历史流量

Redhat 或者 CentOS 发行版 sar 的库文件一定是在 /var/log/sa/ 目录下。ls /var/log/sa/ 发现下面两种类型的文件,sa开头加日期,sar开头加日期,sa开头的文件不能直接cat,只能用 sar -f 查看,sar开头的可以用cat查看。

sar 命令会每个月循环使用,这个月sa01查看的是这个月1号的网卡流量,不能查看再之前的网卡流量。

#sar -f /var/log/sa/saDD DD表示数字,25表示25号,29表示29号

3、实时查看网卡流量

#sar -n DEV 1 5 【每间隔1秒刷新一次,共5次】

[root@thinkpad ~]# sar -n DEV 1 5

Linux 2.6.32-431.el6.i686 (thinkpad) 02/15/17 i686 (1 CPU)

23:12:04 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s

23:12:05 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00

23:12:05 eth0 1.01 0.00 0.06 0.00 0.00 0.00 0.00

4、查看历史负载

#sar -q

05:40:01 PM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15

 【1分钟】【5分钟】【15分钟】

05:50:01 PM 0 75 0.00 0.00 0.00

Average: 0 75 0.00 0.00 0.00

5、查看磁盘

#sar -b

Linux 2.6.32-431.el6.i686 (wangbin) 02/20/2017 i686 (1 CPU)

         【每秒写】【每秒读】

05:40:01 PM tps rtps wtps bread/s bwrtn/s

05:50:01 PM 0.13 0.00 0.13 0.00 1.28

Average: 0.13 0.00 0.13 0.00 1.28

6、显示CPU的状态

#sar -p 【-p或者-u ,也可以不加,sar默认显示CPU状态】

Linux 2.6.32-431.el6.i686 (wangbin) 02/20/2017 i686 (1 CPU)

05:40:01 PM CPU %user %nice %system %iowait %steal %idle

05:50:01 PM all 0.01 0.00 0.25 0.00 0.00 99.74

06:00:02 PM all 0.03 0.00 0.44 0.01 0.00 99.53

Average: all 0.02 0.00 0.34 0.00 0.00 99.64

转载于:https://my.oschina.net/u/3461300/blog/1580532

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值