Linux性能瓶颈排查,查看系统平均负载情况(工具说明篇)

概述


使用top、htop命令查看,平均负载体现系统整体情况,属于CPU、内存、磁盘性能的综合情况,通过分析,一般会发现平均负载值大于CPU核数,依此说明机器资源紧张。

查看是什么资源导致平均负载高
使用top命令查看cpu每个核使用情况,如果占比很高,那瓶颈很可能是CPU。然后查看是什么进程导致的。

查看内存情况(CPU无问题,然后看内存是否有问题)
使用free查看内存使用情况,但不直接看剩余多少,还要看看cache、buffer的情况,然后查看是什么进程占用了过高的内存,可以使用top排序。

查看磁盘情况(内存无问题,然后看磁盘)
使用iostat查看,磁盘会出现啥问题我也不知道啊,我是扒的,对方也没写,以后补充会有什么问题。

查看宽带情况(磁盘无问题,看看宽带)
使用iftop查看流量情况,看看流量是否超过机器给定的带宽,网卡上线。

查看应用程序系统配置

vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监控。他是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析。 

查看Java虚拟机内存大小、应用服务器连接池配置、数据库连接池配置、超时配置等会影响到应用性能的配置。
以上如果都没有问题
就要考虑是不是外部程序影响了,例如网关配置、缓存服务器配置、数据库主动请求等。

 

工具类详解

1、CPU性能评估工具
1)vmstat(系统默认自带,Virtual Memory Statistics 虚拟内存统计)     

vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监控。他是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析。 

输出项

类别 项目 含义 说明
Procs r 等待执行的任务数 展示了正在执行和等待CPU资源的任务个数。当这个值超过了CPU数目,就会出现CPU瓶颈了
  b 表示正在等待资源的数目(b不等大于CPU的总核数)  
Memory swpd 正在使用的swap大小单位K  
  free 空闲的内存空间  
  buff 已使用的buff大小,对块设备的读写进行缓冲  
  cache 已使用的cache大小,文件系统的cache  
  inact    
  active    
Swap si 交换内存使用,由磁盘调入内存 如果经常为0,则表示系统资源是非常充足的。如果不为0,表示swap会经常被使用到,进一步表面系统资源是不够的。
  so 交换内存使用,由内存调入磁盘 如果经常为0,则表示系统资源是非常充足的。如果不为0,表示swap会经常被使用到,进一步表面系统资源是不够的。
IO bi 从块设备读入的数据总量(读磁盘) (KB/s),  
  bo 写入到块设备的数据总理(写磁盘) (KB/s)  
System in 每秒产生的中断次数  
  cs 每秒产生的上下文切换次数 上面这2个值越大,会看到由内核消耗的CPU时间会越多
CPU us 用户进程消耗的CPU时间百分比 us 的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超过50% 的使用,那么我们就该考虑优化程序算法或者进行加速了
  sy 内核进程消耗的CPU时间百分比 sy 的值高时,说明系统内核消耗的CPU资源多,这并不是良性的表现,我们应该检查原因。
  id 空闲  
  wa IO等待消耗的CPU时间百分比

wa 的值高时,说明IO等待比较严重,这可能是由于磁盘大量作随机访问造成,也有可能是磁盘的带宽出现瓶颈(块操作)。

根据线上优化的经验,一般将此值设为20%,如果该值超过20%,则表示io存在比较严重的等待,查看是否有大量的磁盘io读写导致。

命令比较简单,但涉及到的内存、磁盘、cpu之间的关系还是挺复杂的,需要进一步学习相关的knowledge。

 

通常使用vmstat 5 5(表示在5秒更新一次输出信息,统计5次停止输出)命令测试。将得到一个数据汇总他能够反映真正的系统情况。
#vmstat 5 5
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b   swpd   free   buff cache   si   so    bi    bo   in    cs us sy id wa
1 0 62792   3460   9116 88092    6   30   189    89 1061   569 17 28 54 2
0 0 62792   3400   9124 88092    0    00    14 884   434 4 14 81 0
0 0 62792   3400   9132 88092    0    00    14 877   424 4 15 81 0
1 0 62792   3400   9140 88092    0    00    14 868   418 6 20 74 0
1 0 62792   3400   9148 88092    0    00    15 847   400 9 25 67 0
Linux 内存监控vmstat命令输出分成六个部分:


(1)进程procs: 
r:在运行队列中等待的进程数 。
b:在等待io的进程数 。


(2)Linux 内存监控内存memoy: 
swpd:现时可用的交换内存(单位KB)。 
free:空闲的内存(单位KB)。
buff: 缓冲去中的内存数(单位:KB)。
cache:被用来做为高速缓存的内存数(单位:KB)。


(3) Linux 内存监控swap交换页面 
si: 从磁盘交换到内存的交换页数量,单位:KB/秒。
so: 从内存交换到磁盘的交换页数量,单位:KB/秒。


(4)Linux 内存监控 io块设备:
bi: 发送到块设备的块数,单位:块/秒。
bo: 从块设备接收到的块数,单位:块/秒。


(5)Linux 内存监控system系统: 
in: 每秒的中断数,包括时钟中断。
cs: 每秒的环境(上下文)转换次数。


(6)Linux 内存监控cpu中央处理器:
cs:用户进程使用的时间 。以百分比表示。
sy:系统进程使用的时间。 以百分比表示。
id:中央处理器的空闲时间 。以百分比表示。


假如 r经常大于 4 ,且id经常小于40,表示中央处理器的负荷很重。 假如bi,bo 长期不等于0,表示物理内存容量太小。

 

2)iostat(需要安装sysstat工具包)

       iostat是I/O statistics(输入、输出统计)的缩写,主要的功能是对系统的磁盘I/O操作进行监视。

       常用方式:iostat –c 3 5

       其中,-c表示显示CPU的使用情况,-d:显示磁盘的使用情况

 

3)uptime命令

       Uptime是监控系统性能最常用的一个命令,主要用来统计系统当前的运行情况,输出的信息依次为:系统现在的时间、系统从上次开机到现在运行了多长时间、系统目前有多少登陆用户、系统在一分钟内、五分钟内、十五分钟内的平均负载。

 

2、内存性能评估
1)free命令

       free命令是监控linux内存使用状况最常用的指令。

       常见用法:free –m

[root@scs-2 tmp]# free
total used free shared buffers cached
Mem: 3266180 3250004 16176 0 110652 2668236
-/+ buffers/cache: 471116 2795064
Swap: 2048276 80160 1968116
下面是对这些数值的解释:

total:总计物理内存的大小。

used:已使用多大。

free:可用有多少。

Shared:多个进程共享的内存总额。

Buffers/cached:磁盘缓存的大小。

第三行(-/+ buffers/cached):

used:已使用多大。

free:可用有多少。

第四行就不多解释了。

区别:第二行(mem)的used/free与第三行(-/+ buffers/cache) used/free的区别。 这两个的区别在于使用的角度来看,第一行是从OS的角度来看,因为对于OS,buffers/cached 都是属于被使用,所以他的可用内存是16176KB,已用内存是3250004KB,其中包括,内核(OS)使用+Application(X, oracle,etc)使用的+buffers+cached.

第三行所指的是从应用程序角度来看,对于应用程序来说,buffers/cached 是等于可用的,因为buffer/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer/cached会很快地被回收。

所以从应用程序的角度来说,可用内存=系统free memory+buffers+cached。

 

2)sar/pidstat

       此两个命令主要用来监控全部或指定进程占用系统资源的情况,如CPU、内存、设备IO。

       三个公用参数:-u(获取CPU状态)、-r(获取内存状态)、-d(获取磁盘)

       常用组合:

       sar –u 3  获取CPU 3秒内的状态

       pidstat –r –p 1 3    获取内存3 秒内的状态

       看看以上两个命令的差别?

 

3、磁盘性能评估
1)iostat –d组合

       iostat –d 2 3

2)pidstat –d –p 32434 3

3)sar –d 2 3

4、网络性能评估
1)ping命令

2)netstat命令

       netstat –i(查看路由情况)

       netstat –r(查看网络接口状态)

3)mtr/traceroute命令

       跟踪网络路由状态,推荐使用mtr,动态跟踪网络路由状态,用于排查网络问题非常方便。

 

系统性能分析标准


其中:

       %user:表示CPU处在用户模式下的时间百分比

       %sys:表示CPU处在系统模式下的时间百分比

       %iowait:表示CPU等待输入输出完成时间的百分比

       swap in:即si,表示虚拟内存的页导入,即从SWAP DISK交换到RAM

 
 

你可能感兴趣的:(部署,运维,性能瓶颈排查)