系统运维
导语
总结有关服务器的各项性能指标,以及如何判断服务器的性能状况出现问题,性能指标代表的含义。同时也总结Linux服务器上有关工具的各项参数含义,以及日常需要注意的参数信息。
CPU使用率和负载
首先需要分清楚CPU使用率和机器负载不是相同的概念,如果CPU使用率,但是不一定代表机器负载同样也高。所以关于CPU使用率和负载的区别:
CPU使用率:显示的是程序在运行期间占用的CPU百分比;
CPU负载:显示的是一段时间内正在使用和等待使用的CPU平均任务数;
查看CPU使用率和负载
对于查看负载可以使用uptime,w命令,同时top,vmstat工具也可以同时观察CPU使用率和负载情况。
查看CPU核数:
grep model name /proc/cpuinfo | wc -l
uptime命令:
命令返回信息中的load average就是关于系统的平均负载,里面的三个数字分别代表着1分钟、5分钟、15分钟内的系统平均负载。
top工具
(如果是多核CPU,1查看各个CPU详细信息)
top工具的第一行后面的三个值,分别也是代表之前的1、5、15分钟内的平均负载;
第三行关于CPU使用率各项参数的含义:(us)user:CPU在低nice值(高优先级)用户态所占用的时间;(大部分CPU时间都在执行此类程序)
(sy)sytem:CPU处于内核所占用的时间,操作系统通过系统调用从用户态陷入内核态,执行特定的服务;(通常该值会比较小,当服务器执行的IO比较密集的时候,会比较大)
ni(nice):CPU在高nice值(低优先级)用户态以低优先级运行占用的时间(nice>0);
si(softirq):系统处理软中断所消耗的时间
st(steal):在虚拟机情况下,因为虚拟机下的CPU是共享物理CPU,表明这段时间虚拟机等待hypervisor调度CPU的时间。
CPU使用率和负载指标
首先对于CPU使用率,如果长时间处于60-80%的范围,就意味着可能服务器出现瓶颈。如果需要具体分析,还需要观察是user占用率过高,还是system占用率过高。具体:
us:当user占用率过高,通常是某些个别的进程占用了大量的CPU;
sy:当system占用率过高,说明系统管理花费了大量时间,比如一些IO操作,或者部分内核,驱动模块;
*(其次负载指标来说,一直存在许多争议,我综合了一些文章的观点,具体是CPU负载保持在(CPU核数0.7)范围内,这样的负载是安全的,如果超过一定的负载(=CPU核数)就可以算是意味着over load。)**
内存
内存也叫内存存储器,作用是暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。
物理内存:通过物理内存条获得的内存空间,即随机存储器(RAM),与CPU直接交换数据的内部存储器,也叫主存
虚拟内存:计算机的一种内存管理技术,使应用程序认为拥有可连续使用的内存(完整的地址空间),实际上,被分割为多个物理内存碎片,以及部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。
Swap分区:在系统的物理内存不够用的时候,将物理内存中的一部分空间释放出来,供当前运行的程序使用,这些被释放的空间可能来自于很长时间没有操作的程序,释放的空间被临时保存到Swap空间中,等到那些程序需要运行的时候,在从Swap分区中恢复保存的数据到内存。
查看内存情况
free命令:
free命令可以显示Linux系统中的空闲,已用的物理内存,Swap分区:
total:总的可用空间,used:已使用空间;free:空闲可用空间;shared:共享使用物理内存空间;available:可以被应用程序使用的物理内存空间。
buffers就是即将要写入到磁盘中,cache使从磁盘中读取出来。buff/cache:被buff和cache使用的物理内存空间
free是真正未被使用到的物理内存空间,avaiable是从应用程序角度看,如果应用程序需要使用到内存,可以从buff/cache中回收内存满足应用程序的请求。
vmstat工具:
top工具:
(展示不同进程的内存占用情况)
磁盘I/O
对于磁盘I/O访问负载过高,通常会出现系统操作,应用服务无法响应等问题,通常可以通过top、iostat,iotop,ps,lsof工具定位问题。
top命令:
(wa:表示IO等待所占用的CPU时间占比,高过30%时IO压力过高)
iostat(额外安装sysstat包)
(当util接近100%时,说明产生的I/O请求太多,满负荷运行。)
iotop(额外安装iotop包,查看那些进程占用的IO过高)
网络
测试有关网络性能,一般从可用性、响应时间、网络利用率、网络吞吐量,网络带宽容量这几个方面。而常用的工具则有(ping、netstat、sar、tcpdump、iptraf)
iptraf(需要额外安装iptraf包)
查看制定以太网卡的吞吐量情况:
iptraf-ng -d eth0
sar(需要额外安装sysstat)
查看网卡性能:
sar -n DEV 1 100
参数含义:
IFACELAN接口
rxpck/s每秒钟接收的数据包
txpck/s每秒钟发送的数据包
rxbyt/s或者rxkB/s每秒钟接收的字节数(上传速度,网卡入流量)
txbyt/s或者txkB/s每秒钟发送的字节数(下载速度,网卡出流量)
rxcmp/s每秒钟接收的压缩数据包
txcmp/s每秒钟发送的压缩数据包
rxmcst/s每秒钟接收的多播数据包
服务器性能分析软件
参考链接
Linux下的CPU使用率与服务器负载的关系与区别:
https://www.jianshu.com/p/e134b8498413
服务器性能指标(一)——负载(Load)分析及问题排查:
https://www.hollischuang.com/archives/2409
服务器性能指标(三)——内存使用分析及问题排查:
https://www.hollischuang.com/archives/2642
Linux服务器I/O过高原因及解决方法:
https://www.linuxidc.com/Linux/2016-09/134813.htm
查看linux服务器硬盘IO读写负载:
https://www.cnblogs.com/mfryf/archive/2012/03/12/2392012.html