25

Linux服务器性能评估-运维开发学习之路

 4 years ago
source link: https://blog.51cto.com/mbb97/2466492
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

总结有关服务器的各项性能指标,以及如何判断服务器的性能状况出现问题,性能指标代表的含义。同时也总结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分钟内的系统平均负载。

Linux服务器性能评估

top工具

Linux服务器性能评估

(如果是多核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命令:

Linux服务器性能评估

free命令可以显示Linux系统中的空闲,已用的物理内存,Swap分区:

  • total:总的可用空间,used:已使用空间;free:空闲可用空间;shared:共享使用物理内存空间;available:可以被应用程序使用的物理内存空间。
  • buffers就是即将要写入到磁盘中,cache使从磁盘中读取出来。buff/cache:被buff和cache使用的物理内存空间
  • free是真正未被使用到的物理内存空间,avaiable是从应用程序角度看,如果应用程序需要使用到内存,可以从buff/cache中回收内存满足应用程序的请求。

vmstat工具:

Linux服务器性能评估

top工具:

Linux服务器性能评估

(展示不同进程的内存占用情况)

磁盘I/O

对于磁盘I/O访问负载过高,通常会出现系统操作,应用服务无法响应等问题,通常可以通过top、iostat,iotop,ps,lsof工具定位问题。

top命令:

Linux服务器性能评估

(wa:表示IO等待所占用的CPU时间占比,高过30%时IO压力过高)

iostat(额外安装sysstat包)

Linux服务器性能评估

(当util接近100%时,说明产生的I/O请求太多,满负荷运行。)

iotop(额外安装iotop包,查看那些进程占用的IO过高)

Linux服务器性能评估

测试有关网络性能,一般从可用性、响应时间、网络利用率、网络吞吐量,网络带宽容量这几个方面。而常用的工具则有(ping、netstat、sar、tcpdump、iptraf)

iptraf(需要额外安装iptraf包)

查看制定以太网卡的吞吐量情况:

iptraf-ng -d eth0
Linux服务器性能评估
Linux服务器性能评估

sar(需要额外安装sysstat)

查看网卡性能:

sar -n DEV 1 100
Linux服务器性能评估

参数含义:

  • IFACELAN接口
  • rxpck/s每秒钟接收的数据包
  • txpck/s每秒钟发送的数据包
  • rxbyt/s或者rxkB/s每秒钟接收的字节数(上传速度,网卡入流量)
  • txbyt/s或者txkB/s每秒钟发送的字节数(下载速度,网卡出流量)
  • rxcmp/s每秒钟接收的压缩数据包
  • txcmp/s每秒钟发送的压缩数据包
  • rxmcst/s每秒钟接收的多播数据包

服务器性能分析软件

Linux服务器性能评估

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK