10月23日任务linux
10.1 使用w查看系统负载nginx
10.2 vmstat命令web
10.3 top命令shell
10.4 sar命令数据库
10.5 nload命令apache
10.1 、使用w查看系统负载centos
监控系统负载api
w/uptime 查看系统负载缓存
cat /proc/cpuinfo 查看CPU核数服务器
vmstat 监控系统状态
用法 vmstat 1
关键的几列 :r , b , swpd , si ,so ,bo ,us ,wa
top查看进程使用资源状况
top -c 显示详细的进程信息
top -bn1 静态显示全部进程
q 退出,数字1显示全部核CPU,大写字母M按内存使用排序
大写字母P按cpu使用排序
#主要看标颜色部门,表示一分钟内系统负载,0表示空闲,值在cpu核数范围内表示合理。
[root@centos6 ~]# w 14:40:05 up 6 days, 4:08, 1 user, load average: 0.00, 0.01, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 192.168.12.123 14:24 0.00s 0.03s 0.00s w [root@centos6 ~]# uptime 14:41:48 up 6 days, 4:10, 2 users, load average: 0.00, 0.01, 0.05 [root@centos6 ~]# cat /proc/cpuinfo processor : 0 #主要看这个值,0表示1个逻辑cpu ,1表示2个,以此类推,最大值为7 vendor_id : GenuineIntel cpu family : 6 model : 79 model name : Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz stepping : 1 microcode : 184549409 cpu MHz : 2199.998 cache size : 30720 KB physical id : 0 siblings : 1 core id : 0 cpu cores : 1 apicid : 0 initial apicid : 0 fpu : yes fpu_exception : yes cpuid level : 20 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 syscall nx pdpe1gb rdtscp lm constant_tsc up arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ida arat epb xsaveopt pln pts dtherm fsgsbase bmi1 hle avx2 smep bmi2 invpcid rtm rdseed adx bogomips : 4399.99 clflush size : 64 cache_alignment : 64 address sizes : 42 bits physical, 48 bits virtual power management:
10.2 vmstat命令 能够展示给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换状况,IO读写状况。
[root@centos6 ~]# vmstat 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 902680 12288 34600 0 0 0 0 6 7 0 0 100 0 0 [root@centos6 ~]# vmstat 1 # 1表示1秒钟显示一次 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 902680 12296 34620 0 0 0 0 6 7 0 0 100 0 0 0 0 0 902664 12296 34620 0 0 0 0 14 13 0 0 100 0 0 0 0 0 902664 12296 34620 0 0 0 0 10 10 0 0 100 0 0 0 0 0 902664 12296 34620 0 0 0 0 14 13 0 0 100 0 0 0 0 0 902664 12296 34620 0 0 0 0 11 10 0 0 100 0 0 C [root@centos6 ~]# vmstat 1 5 # 1表示1秒钟显示一次 ,5表示显示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 902680 12296 34620 0 0 0 0 6 7 0 0 100 0 0 0 0 0 902664 12296 34620 0 0 0 0 15 17 0 0 100 0 0 0 0 0 902664 12296 34620 0 0 0 0 13 13 0 0 100 0 0 0 0 0 902664 12296 34620 0 0 0 0 10 11 0 0 100 0 0 0 0 0 902664 12296 34620 0 0 0 0 15 14 0 0 100 0 0
r 表示运行队列(就是说多少个进程真的分配到CPU),我测试的服务器目前CPU比较空闲,没什么程序在跑,当这个值超过了CPU数目,就会出现CPU瓶颈了。这个也和top的负载有关系,通常负载超过了3就比较高,超过了5就高,超过了10就不正常了,服务器的状态很危险。top的负载相似每秒的运行队列。若是运行队列过大,表示你的CPU很繁忙,通常会形成CPU使用率很高。
b 表示阻塞的进程,这个很少说,进程阻塞,你们懂的。
swpd 虚拟内存已使用的大小,若是大于0,表示你的机器物理内存不足了,若是不是程序内存泄露的缘由,那么你该升级内存了或者把耗内存的任务迁移到其余机器。
free 空闲的物理内存的大小,个人机器内存总共8G,剩余3415M。
buff Linux/Unix系统是用来存储,目录里面有什么内容,权限等的缓存,我本机大概占用300多M
cache cache直接用来记忆咱们打开的文件,给文件作缓冲,我本机大概占用300多M(这里是Linux/Unix的聪明之处,把空闲的物理内存的一部分拿来作文件和目录的缓存,是为了提升 程序执行的性能,当程序使用内存时,buffer/cached会很快地被使用。)
si 每秒从磁盘读入虚拟内存的大小,若是这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉。个人机器内存充裕,一切正常。
so 每秒虚拟内存写入磁盘的大小,若是这个值大于0,同上。
bi 每秒从块设备接收到的块数,即读块设备,这里的块设备是指系统上全部的磁盘和其余块设备,默认块大小是1024byte,我本机上没什么IO操做,因此一直是0,可是我曾在处理拷贝大量数据(2-3T)的机器上看过能够达到140000/s,磁盘写入速度差很少140M每秒
bo 每秒发送到块设备的块数,即写块设备,例如咱们读取文件,bo就要大于0。bi和bo通常都要接近0,否则就是IO过于频繁,须要调整。
in 每秒CPU的中断次数,包括时间中断
cs 每秒上下文切换次数,例如咱们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目,例如在apache和nginx这种web服务器中,咱们通常作性能测试时会进行几千并发甚至几万并发的测试,选择web服务器的进程能够由进程或者线程的峰值一直下调,压测,直到cs到一个比较小的值,这个进程和线程数就是比较合适的值了。系统调用也是,每次调用系统函数,咱们的代码就会进入内核空间,致使上下文切换,这个是很耗资源,也要尽可能避免频繁调用系统函数。上下文切换次数过多表示你的CPU大部分浪费在上下文切换,致使CPU干正经事的时间少了,CPU没有充分利用,是不可取的。
us 用户CPU资源占用百分比,我曾经在一个作加密解密很频繁的服务器上,能够看到us接近100,r运行队列达到80(机器在作压力测试,性能表现不佳)。
sy 系统CPU资源占用百分比,若是过高,表示系统调用时间长,例如是IO操做频繁。
id 空闲 CPU资源占用百分比,通常来讲,id + us + sy = 100,通常我认为id是空闲CPU使用率,us是用户CPU使用率,sy是系统CPU使用率。
wt 等待IO CPU时间。
10.3 、top 命令
top命令是Linux下经常使用的性能分析工具,可以实时显示系统中各个进程的资源占用情况,相似于Windows的任务管理器。
top显示系统当前的进程和其余情况,是一个动态显示过程,便可以经过用户按键来不断刷新当前状态.若是在前台执行该命令,它将独占前台,直到用户 终止该程序为止. 比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列表.该命令能够按CPU使用.内存使用和执行时间 对任务进行排序;并且该命令的不少特性均可以经过交互式命令或者在我的定制文件中进行设定.
top - 19:43:36 up 1 min, 1 user, load average: 0.44, 0.22, 0.08 Tasks: 97 total, 1 running, 96 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 KiB Mem : 1006924 total, 741380 free, 125868 used, 139676 buff/cache KiB Swap: 2097148 total, 2097148 free, 0 used. 720680 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 20 0 128000 6524 4124 S 0.0 0.6 0:02.05 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 0:00.10 ksoftirqd/0 4 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0 5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H 6 root 20 0 0 0 0 S 0.0 0.0 0:00.02 kworker/u128:0 7 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0 8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh 9 root 20 0 0 0 0 S 0.0 0.0 0:00.73 rcu_sched 10 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 lru-add-drain
在 linux 系统中,通常把进程和线程统称为任务。第二行信息是对当前系统中全部任务的统计:
Tasks:97total 表示当前系统的进程总数。
1 running 表示当前系统中有 1 个正在运行的进程。
96 sleeping 表示当前系统中有 269 个休眠的进程。
0 stopped 表示中止状态的进程数为 0。
0 zombie 表示处于僵死状态的进程数为 0。
CPU 信息
第三行显示 CPU 的使用状况:
这里一共有八个字段,是咱们了解 CPU 负载的主要依据,下面咱们逐一介绍。
us
进程在用户地址空间中消耗 CPU 时间的百分比。像 shell程序、各类语言的编译器、数据库应用、web 服务器和各类桌面应用都算是运行在用户地址空间的进程。这些程序若是不是处于 idle 状态,那么绝大多数的 CPU 时间都是运行在用户态。
sy
进程在内核地址空间中消耗 CPU 时间的百分比。全部进程要使用的系统资源都是由 Linux 内核处理的。当处于用户态(用户地址空间)的进程须要使用系统的资源时,好比须要分配一些内存、或是执行 IO 操做、再或者是去建立一个子进程,此时就会进入内核态(内核地址空间)运行。事实上,决定进程在下一时刻是否会被运行的进程调度程序就运行在内核态。对于操做系统的设计来讲,消耗在内核态的时间应该是越少越好。在实践中有一类典型的状况会使 sy 变大,那就是大量的 IO 操做,所以在调查 IO 相关的问题时须要着重关注它。
ni
ni 是 nice 的缩写,能够经过 nice 值调整进程用户态的优先级。这里显示的 ni 表示调整过 nice 值的进程消耗掉的 CPU 时间。若是系统中没有进程被调整过 nice 值,那么 ni 就显示为 0。
id
CPU 处于 idle 状态的百分比。通常状况下, us + ni + id 应该接近 100%。
wa
CPU 等待磁盘 IO 操做的时间。和 CPU 的处理速度相比,磁盘 IO 操做是很是慢的。有不少这样的操做,好比:CPU 在启动一个磁盘读写操做后,须要等待磁盘读写操做的结果。在磁盘读写操做完成前,CPU 只能处于空闲状态。Linux 系统在计算系统平均负载时会把 CPU 等待 IO 操做的时间也计算进去,因此在咱们看到系统平均负载太高时,能够经过 wa 来判断系统的性能瓶颈是否是过多的 IO 操做形成的。
hi & si
这两个值表示系统处理中断消耗的时间。中断分为硬中断和软中断,hi 表示处理硬中断消耗的时间,si 表示处理软中断消耗的时间。硬中断是硬盘、网卡等硬件设备发送给 CPU 的中断消息,当 CPU 收到中断消息后须要进行适当的处理(消耗 CPU 时间)。软中断是由程序发出的中断,最终也会执行相应的处理程序(消耗 CPU 时间)。
st
只有 Linux 在做为虚拟机运行时 st 才是有意义的。它表示虚机等待 CPU 资源的时间(虚机分到的是虚拟 CPU,当须要真实的 CPU 时,可能真实的 CPU 正在运行其它虚机的任务,因此须要等待)。
小写字母 t 能够控制是否显示任务信息汇总和 CPU 信息。没错,它能控制是否显示两行信息。
10.4 、sar命令 功能丰富,被人们称为Linux中的瑞士军刀
#sar -n DEV 1 3 表示查看网卡流量 1秒钟刷新一次 ,刷新3次。
rxpck /s表示每秒接收到的数据包量 ,若是数值在几千之内是正常状况,超过一万就是非正常,可能被共计。rxkB/s表示每秒发送
[root@centos6 ~]# sar -n DEV 1 3 Linux 2.6.32-642.el6.x86_64 (centos6.8) 10/24/2018 _x86_64_ (1 CPU) 10:14:49 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 10:14:50 AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:14:50 AM eth0 3.00 0.00 0.18 0.00 0.00 0.00 0.00 10:14:50 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 10:14:51 AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:14:51 AM eth0 3.03 1.01 0.18 0.40 0.00 0.00 0.00 10:14:51 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 10:14:52 AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:14:52 AM eth0 3.00 1.00 0.18 0.39 0.00 0.00 0.00 Average: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s Average: lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: eth0 3.01 0.67 0.18 0.26 0.00 0.00 0.00
#查看负载: sar -q
[root@centos6 ~]# sar -q 1 5 Linux 2.6.32-642.el6.x86_64 (centos6.8) 10/24/2018 _x86_64_ (1 CPU) 11:05:55 AM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 11:05:56 AM 0 79 0.00 0.01 0.05 11:05:57 AM 0 79 0.00 0.01 0.05 11:05:58 AM 0 79 0.00 0.01 0.05 11:05:59 AM 0 79 0.00 0.01 0.05 11:06:00 AM 0 79 0.00 0.01 0.05 Average: 0 79 0.00 0.01 0.05
10.5 nload 命令 监控网卡流量,incoming:接入带宽,outgoing:出去带宽。
[root@centos6 ~]# nload