基础命令学习目录首页html
原文连接:https://www.cnblogs.com/wensiyang0916/p/6514820.htmllinux
vmstat 1 1表示每秒采集一次
vmstat 2 1 2表示2秒采集一次,1表示只采集一次ios

r 表示运行队列(就是说多少个进程真的分配到CPU)
我测试的服务器目前CPU比较空闲,没什么程序在跑,当这个值超过了CPU数目,就会出现CPU瓶颈了。这个也和top的负载有关系,通常负载超过了3就比较高,超过了5就高,超过了10就不正常了,服务器的状态很危险。top的负载相似每秒的运行队列。若是运行队列过大,表示你的CPU很繁忙,通常会形成CPU使用率很高。
b 表示阻塞的进程,这个很少说,进程阻塞,你们懂的。
swpd 虚拟内存已使用的大小
若是大于0,表示你的机器物理内存不足了,若是不是程序内存泄露的缘由,那么你该升级内存了或者把耗内存的任务迁移到其余机器。
free 空闲的物理内存的大小
buff 设备和设备之间的缓冲
Linux/Unix系统是用来存储,目录里面有什么内容,权限等的缓存
cache cpu和内存之间的缓冲
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使用率。
wa 等待IO CPU时间。nginx
重点参数 r,b,swpd,free,buff,cache,si,so,bi,boweb
性能分析信息:算法
IO/CPU/men连锁反应
1.free急剧降低
2.buff和cache被回收降低,但也无济于事
3.依旧须要使用大量swap交换分区swpd
4.等待进程数,b增多
5.读写IO,bi bo增多
6.si so大于0开始从硬盘中读取
7.cpu等待时间用于 IO等待,wa增长
内存不足
1.开始使用swpd,swpd不为0
2.si so大于0开始从硬盘中读取
io瓶颈:
1.读写IO,bi bo增多超过2000
2.cpu等待时间用于 IO等待,wa增长 超过20
3.sy 系统调用时间长,IO操做频繁会致使增长 >30%
4.wa io等待时间长
iowait% <20% 良好
iowait% <35% 通常
iowait% >50%
5.进一步使用iostat观察
CPU瓶颈:load,vmstat中r列
1.反应为CPU队列长度
2.一段时间内,CPU正在处理和等待CPU处理的进程数之和,直接反应了CPU的使用和申请状况。
3.理想的load average:核数*CPU数*0.7
CPU个数:grep 'physical id' /proc/cpuinfo | sort -u
核数:grep 'core id' /proc/cpuinfo | sort -u | wc -l
4.超过这个值就说明已是CPU瓶颈了
CPU瓶颈
1.us 用户CPU时间高超过90%
涉及到web服务器,cs 每秒上下文切换次数
例如咱们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目,例如在apache和nginx这种web服务器中,咱们通常作性能测试时会进行几千并发甚至几万并发的测试,选择web服务器的进程能够由进程或者线程的峰值一直下调,压测,直到cs到一个比较小的值,这个进程和线程数就是比较合适的值了。系统调用也是,每次调用系统函数,咱们的代码就会进入内核空间,致使上下文切换,这个是很耗资源,也要尽可能避免频繁调用系统函数。上下文切换次数过多表示你的CPU大部分浪费在上下文切换,致使CPU干正经事的时间少了,CPU没有充分利用,是不可取的。
1.cs能够对apache和nginx线程和进程数限制起到必定的参考做用
2.咱们通常作性能测试时会进行几千并发甚至几万并发的测试,选择web服务器的进程能够由进程或者线程的峰值一直下调,压测,直到cs到一个比较小的值,这个进程和线程数就是比较合适的值了
较好的趋势:主要是 swap使用少,swpd数值低。si so分页读取写入数值趋近于零sql
vmstat命令是最多见的Linux/Unix监控工具,能够展示给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换状况,IO读写状况。这个命令是我查看Linux/Unix最喜好的命令,一个是Linux/Unix都支持,二是相比top,我能够看到整个机器的CPU,内存,IO的使用状况,而不是单单看到各个进程的CPU使用率和内存使用率(使用场景不同)。数据库
通常vmstat工具的使用是经过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数,如:apache
root@ubuntu:~# vmstat 2 1
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
1 0 0 3498472 315836 3819540 0 0 0 1 2 0 0 0 100 0
2表示每一个两秒采集一次服务器状态,1表示只采集一次。ubuntu
实际上,在应用过程当中,咱们会在一段时间内一直监控,不想监控直接结束vmstat就好了,例如:
root@ubuntu:~# vmstat 2
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
1 0 0 3499840 315836 3819660 0 0 0 1 2 0 0 0 100 0
0 0 0 3499584 315836 3819660 0 0 0 0 88 158 0 0 100 0
0 0 0 3499708 315836 3819660 0 0 0 2 86 162 0 0 100 0
0 0 0 3499708 315836 3819660 0 0 0 10 81 151 0 0 100 0
1 0 0 3499732 315836 3819660 0 0 0 2 83 154 0 0 100 0
这表示vmstat每2秒采集数据,一直采集,直到我结束程序,这里采集了5次数据我就结束了程序。
好了,命令介绍完毕,如今开始实战讲解每一个参数的意思。
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时间
原文连接:https://www.cnblogs.com/ggjucheng/archive/2012/01/05/2312625.html
1、前言
vmstat命令: 用来得到有关进程、虚存、页面交换空间及 CPU活动的信息。这些信息反映了系统的负载状况
2、虚拟内存运行原理
在系统中运行的每一个进程都须要使用到内存,但不是每一个进程都须要每时每刻使用系统分配的内存空间。当系统运行所需内存超过实际的物理内存,内核会释放某些进程所占用但未使用的部分或全部物理内存,将这部分资料存储在磁盘上直到进程下一次调用,并将释放出的内存提供给有须要的进程使用。
在Linux内存管理中,主要是经过“调页Paging”和“交换Swapping”来完成上述的内存调度。调页算法是将内存中最近不常使用的页面换到磁盘上,把活动页面保留在内存中供进程使用。交换技术是将整个进程,而不是部分页面,所有交换到磁盘上。
分页(Page)写入磁盘的过程被称做Page-Out,分页(Page)从磁盘从新回到内存的过程被称做Page-In。当内核须要一个分页时,但发现此分页不在物理内存中(由于已经被Page-Out了),此时就发生了分页错误(Page Fault)。
当系统内核发现可运行内存变少时,就会经过Page-Out来释放一部分物理内存。经管Page-Out不是常常发生,可是若是Page-out频繁不断的发生,直到当内核管理分页的时间超过运行程式的时间时,系统效能会急剧降低。这时的系统已经运行很是慢或进入暂停状态,这种状态亦被称做thrashing(颠簸)。
3、使用vmstat
1.用法
vmstat [-a] [-n] [-S unit] [delay [ count]]
vmstat [-s] [-n] [-S unit]
vmstat [-m] [-n] [delay [ count]]
vmstat [-d] [-n] [delay [ count]]
vmstat [-p disk partition] [-n] [delay [ count]]
vmstat [-f]
vmstat [-V]
-a:显示活跃和非活跃内存
-f:显示从系统启动至今的fork数量 。
-m:显示slabinfo
-n:只在开始时显示一次各字段名称。
-s:显示内存相关统计信息及多种系统活动数量。
delay:刷新时间间隔。若是不指定,只显示一条结果。
count:刷新次数。若是不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷。
-d:显示磁盘相关统计信息。
-p:显示指定磁盘分区统计信息
-S:使用指定单位显示。参数有 k 、K 、m 、M ,分别表明1000、102四、1000000、1048576字节(byte)。默认单位为K(1024 bytes)
-V:显示vmstat版本信息。
2.字段含义说明:
类别 |
项目 |
含义 |
说明 |
Procs(进程) |
r |
等待执行的任务数 |
展现了正在执行和等待cpu资源的任务个数。当这个值超过了cpu个数,就会出现cpu瓶颈。 |
B |
等待IO的进程数量 |
|
Memory(内存) |
swpd |
正在使用虚拟的内存大小,单位k |
|
free |
空闲内存大小 |
|
buff |
已用的buff大小,对块设备的读写进行缓冲 |
|
cache |
已用的cache大小,文件系统的cache |
|
inact |
非活跃内存大小,即被标明可回收的内存,区别于free和active |
具体含义见:概念补充(当使用-a选项时显示) |
active |
活跃的内存大小 |
具体含义见:概念补充(当使用-a选项时显示) |
Swap |
si |
每秒从交换区写入内存的大小(单位:kb/s) |
|
so |
每秒从内存写到交换区的大小 |
|
IO |
bi |
每秒读取的块数(读磁盘) |
如今的Linux版本块的大小为1024bytes |
bo |
每秒写入的块数(写磁盘) |
|
system |
in |
每秒中断数,包括时钟中断 |
这两个值越大,会看到由内核消耗的cpu时间会越多 |
cs |
每秒上下文切换数 |
CPU(以百分比表示) |
Us |
用户进程执行消耗cpu时间(user time) |
us的值比较高时,说明用户进程消耗的cpu时间多,可是若是长期超过50%的使用,那么咱们就该考虑优化程序算法或其余措施了 |
Sy |
系统进程消耗cpu时间(system time) |
sys的值太高时,说明系统内核消耗的cpu资源多,这个不是良性的表现,咱们应该检查缘由。 |
Id |
空闲时间(包括IO等待时间) |
|
wa |
等待IO时间 |
Wa太高时,说明io等待比较严重,这多是因为磁盘大量随机访问形成的,也有多是磁盘的带宽出现瓶颈。 |
4、常见问题处理
若是r常常大于4,且id常常少于40,表示cpu的负荷很重。
若是pi,po长期不等于0,表示内存不足。
若是disk常常不等于0,且在b中的队列大于3,表示io性能很差。
1.)若是在processes中运行的序列(process r)是连续的大于在系统中的CPU的个数表示系统如今运行比较慢,有多数的进程等待CPU。
2.)若是r的输出数大于系统中可用CPU个数的4倍的话,则系统面临着CPU短缺的问题,或者是CPU的速率太低,系统中有多数的进程在等待CPU,形成系统中进程运行过慢。
3.)若是空闲时间(cpu id)持续为0而且系统时间(cpu sy)是用户时间的两倍(cpu us)系统则面临着CPU资源的短缺。
解决办法:
当发生以上问题的时候请先调整应用程序对CPU的占用状况.使得应用程序可以更有效的使用CPU.同时能够考虑增长更多的CPU. 关于CPU的使用状况还能够结合mpstat, ps aux top prstat –a等等一些相应的命令来综合考虑关于具体的CPU的使用状况,和那些进程在占用大量的CPU时间.通常状况下,应用程序的问题会比较大一些.好比一些sql语句不合理等等都会形成这样的现象.
内存问题现象:
内存的瓶颈是由scan rate (sr)来决定的.scan rate是经过每秒的始终算法来进行页扫描的.若是scan rate(sr)连续的大于每秒200页则表示可能存在内存缺陷.一样的若是page项中的pi和po这两栏表示每秒页面的调入的页数和每秒调出的页数.若是该值常常为非零值,也有可能存在内存的瓶颈,固然,若是个别的时候不为0的话,属于正常的页面调度这个是虚拟内存的主要原理.
解决办法:
1.调节applications & servers使得对内存和cache的使用更加有效.
2.增长系统的内存.
3. Implement priority paging in s in pre solaris 8 versions by adding line "set priority paging=1" in /etc/system. Remove this line if upgrading from Solaris 7 to 8 & retaining old /etc/system file.
关于内存的使用状况还能够结ps aux top prstat –a等等一些相应的命令来综合考虑关于具体的内存的使用状况,和那些进程在占用大量的内存.通常状况下,若是内存的占用率比较高,可是,CPU的占用很低的时候,能够考虑是有不少的应用程序占用了内存没有释放,可是,并无占用CPU时间,能够考虑应用程序,对于未占用CPU时间和一些后台的程序,释放内存的占用。
5、概念补充
Free memory
This is RAM that's not being used.
Wired memory
Information in this memory can't be moved to the hard disk, so it must stay in RAM. The amount of Wired memory depends on the applications you are using.
Active memory
This information is currently in memory, and has been recently used.
Inactive memory
This information in memory is not actively being used, but was recently used.
For example, if you've been using Mail and then quit it, the RAM that Mail was using is marked as Inactive memory. This Inactive memory is available for use by another application, just like Free memory. However, if you open Mail before its Inactive memory is used by a different application, Mail will open quicker because its Inactive memory is converted to Active memory, instead of loading Mail from the slower hard disk.
原文连接:https://www.cnblogs.com/tommyli/p/3746187.html
1、前言
很显然从名字中咱们就能够知道vmstat是一个查看虚拟内存(Virtual Memory)使用情况的工具,可是怎样经过vmstat来发现系统中的瓶颈呢?在回答这个问题前,仍是让咱们回顾一下Linux中关于虚拟内存相关内容。
2、虚拟内存原理
在系统中运行的每一个进程都须要使用到内存,但不是每一个进程都须要每时每刻使用系统分配的内存空间。当系统运行所需内存超过实际的物理内存,内核会释放某些进程所占用但未使用的部分或全部物理内存,将这部分资料存储在磁盘上直到进程下一次调用,并将释放出的内存提供给有须要的进程使用。
在Linux内存管理中,主要是经过“调页Paging”和“交换Swapping”来完成上述的内存调度。调页算法是将内存中最近不常使用的页面换到磁盘上,把活动页面保留在内存中供进程使用。交换技术是将整个进程,而不是部分页面,所有交换到磁盘上。
分页(Page)写入磁盘的过程被称做Page-Out,分页(Page)从磁盘从新回到内存的过程被称做Page-In。当内核须要一个分页时,但发现此分页不在物理内存中(由于已经被Page-Out了),此时就发生了分页错误(Page Fault)。
当系统内核发现可运行内存变少时,就会经过Page-Out来释放一部分物理内存。经管Page-Out不是常常发生,可是若是Page-out频繁不断的发生,直到当内核管理分页的时间超过运行程式的时间时,系统效能会急剧降低。这时的系统已经运行很是慢或进入暂停状态,这种状态亦被称做thrashing(颠簸)。
3、vmstat详解
1.用法
vmstat [-a] [-n] [-S unit] [delay [ count]]
vmstat [-s] [-n] [-S unit]
vmstat [-m] [-n] [delay [ count]]
vmstat [-d] [-n] [delay [ count]]
vmstat [-p disk partition] [-n] [delay [ count]]
vmstat [-f]
vmstat [-V]
-a:显示活跃和非活跃内存
-f:显示从系统启动至今的fork数量 。
-m:显示slabinfo
-n:只在开始时显示一次各字段名称。
-s:显示内存相关统计信息及多种系统活动数量。
delay:刷新时间间隔。若是不指定,只显示一条结果。
count:刷新次数。若是不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷。
-d:显示磁盘相关统计信息。
-p:显示指定磁盘分区统计信息
-S:使用指定单位显示。参数有 k 、K 、m 、M ,分别表明1000、102四、1000000、1048576字节(byte)。默认单位为K(1024 bytes)
-V:显示vmstat版本信息。
2.使用说明
例子1:每3秒输出一条结果

字段说明:
Procs(进程):
r: 运行队列中进程数量,这个值也能够判断是否须要增长CPU。(长期大于1)
b: 等待IO的进程数量
Memory(内存):
swpd: 使用虚拟内存大小
注意:若是swpd的值不为0,可是SI,SO的值长期为0,这种状况不会影响系统性能。
free: 空闲物理内存大小
buff: 用做缓冲的内存大小
cache: 用做缓存的内存大小
注意:若是cache的值大的时候,说明cache处的文件数多,若是频繁访问到的文件都能被cache处,那么磁盘的读IO bi会很是小。
Swap:
si: 每秒从交换区写到内存的大小,由磁盘调入内存
so: 每秒写入交换区的内存大小,由内存调入磁盘
注意:内存够用的时候,这2个值都是0,若是这2个值长期大于0时,系统性能会受到影响,磁盘IO和CPU资源都会被消耗。有些朋友看到空闲内存(free)不多的或接近于0时,就认为内存不够用了,不能光看这一点,还要结合si和so,若是free不多,可是si和so也不多(大多时候是0),那么不用担忧,系统性能这时不会受到影响的。
IO:(如今的Linux版本块的大小为1kb)
bi: 每秒读取的块数
bo: 每秒写入的块数
注意:随机磁盘读写的时候,这2个值越大(如超出1024k),能看到CPU在IO等待的值也会越大。
系统:
in: 每秒中断数,包括时钟中断。
cs: 每秒上下文切换数。
注意:上面2个值越大,会看到由内核消耗的CPU时间会越大。
CPU(以百分比表示):
us: 用户进程执行时间百分比(user time)
注意: us的值比较高时,说明用户进程消耗的CPU时间多,可是若是长期超50%的使用,那么咱们就该考虑优化程序算法或者进行加速。
sy: 内核系统进程执行时间百分比(system time)
注意:sy的值高时,说明系统内核消耗的CPU资源多,这并非良性表现,咱们应该检查缘由。
wa: IO等待时间百分比
注意:wa的值高时,说明IO等待比较严重,这可能因为磁盘大量做随机访问形成,也有可能磁盘出现瓶颈(块操做)。
id: 空闲时间百分比
例子2:显示活跃和非活跃内存

使用-a选项显示活跃和非活跃内存时,所显示的内容除增长inact和active外,其余显示内容与例子1相同。
字段说明:
Memory(内存):
inact: 非活跃内存大小(当使用-a选项时显示)
active: 活跃的内存大小(当使用-a选项时显示)
总结:
目前说来,对于服务器监控有用处的度量主要有:
r(运行队列)
pi(页导入)
us(用户CPU)
sy(系统CPU)
id(空闲)
注意:若是r常常大于4 ,且id常常少于40,表示cpu的负荷很重。若是bi,bo 长期不等于0,表示内存不足。
经过VMSTAT识别CPU瓶颈:
r(运行队列)展现了正在执行和等待CPU资源的任务个数。当这个值超过了CPU数目,就会出现CPU瓶颈了。
Linux下查看CPU核心数的命令:
cat /proc/cpuinfo|grep processor|wc -l
当r值超过了CPU个数,就会出现CPU瓶颈,解决办法大致几种:
1. 最简单的就是增长CPU个数和核数
2. 经过调整任务执行时间,如大任务放到系统不繁忙的状况下进行执行,进尔平衡系统任务
3. 调整已有任务的优先级
经过vmstat识别CPU满负荷:
首先须要声明一点的是,vmstat中CPU的度量是百分比的。当us+sy的值接近100的时候,表示CPU正在接近满负荷工做。但要注意的是,CPU 满负荷工做并不能说明什么,Linux老是试图要CPU尽量的繁忙,使得任务的吞吐量最大化。惟一可以肯定CPU瓶颈的仍是r(运行队列)的值。
经过vmstat识别RAM瓶颈:
数据库服务器都只有有限的RAM,出现内存争用现象是Oracle的常见问题。
首先用free查看RAM的数量:
[oracle@oracle-db02 ~]$ free
total used free shared buffers cached
Mem: 2074924 2071112 3812 0 40616 1598656
-/+ buffers/cache: 431840 1643084
Swap: 3068404 195804 2872600
当内存的需求大于RAM的数量,服务器启动了虚拟内存机制,经过虚拟内存,能够将RAM段移到SWAP DISK的特殊磁盘段上,这样会 出现虚拟内存的页导出和页导入现象,页导出并不能说明RAM瓶颈,虚拟内存系统常常会对内存段进行页导出,但页导入操做就代表了服务器须要更多的内存了, 页导入须要从SWAP DISK上将内存段复制回RAM,致使服务器速度变慢。
解决的办法有几种:
1. 最简单的,加大RAM;
2. 改小SGA,使得对RAM需求减小;
3. 减小RAM的需求。(如:减小PGA)
原文连接:https://blog.csdn.net/wzyzzu/article/details/50395502