Linux系统中查看系统负载

本文转载自:http://zuo.ai.xiao.blog.163.com/blog/static/607915532011867432394/

感谢原作者。


        可能大家都会注意到,当在Linux系统中执行uptime、w和top三个命令时。在第一行的结果结尾都会有load average,并且后面会跟着三个数字,这就是今天我们要说的系统平均负载。
       系统平均负载的定义:在特定时间间隔内运行队列中的平均进程数。如果一个进程满足以下条件,则其就会位于运行队列中:
       1. 没有在等待I/O 操作的结果
       2. 没有主动进入等待状态(也就是没有调用'wait')
       3. 没有被停止(例如:等待终止)


top 

1、获取cpu占用情况
$ top -n 1 |grep Cpu
Cpu(s):  1.4%us,  0.3%sy,  0.0%ni, 96.9%id,  1.5%wa,  0.0%hi,  0.0%si,  0.0%st
解释:1.4%us是用户占用cpu情况  0.3%sy是系统占用cpu情况


2、获得内存占用情况
$ top -n 1 |grep Mem
Mem:   8167984k total,  7503820k used,   664164k free,   254480k buffers

uptime

        linux系统中的uptime命令主要用于获取主机运行时间和查询linux系统负载等信息。
        uptime命令可以显示系统已经运行了多长时间,信息显示依次为:现在时间、系统已经运行了多长时间、目前有多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载。
        uptime命令用法十分简单:直接输入uptime即可

$ uptime
10:26:30 up 3 days, 20:59,  2 users,  load average: 0.27, 0.19, 0.21

显示内容说明:
10:26:30                             //系统当前时间
up 3 days, 20:59              //主机已运行时间,时间越大,说明你的机器越稳定。
2 users                              //用户连接数,是总连接数而不是用户数
load average                     // 系统平均负载,统计最近1,5,15分钟的系统平均负载
        那么什么是系统平均负载呢? 系统平均负载是指在特定时间间隔内运行队列中的平均进程数。
        如果每个CPU内核的当前活动进程数不大于3的话,那么系统的性能是良好的。如果每个CPU内核的任务数大于5,那么这台机器的性能有严重问题。
        如果你的linux主机是1个双核CPU的话,当Load Average 为6的时候说明机器已经被充分使用了。


vmstat

        通过STATSPACK收集服务器信息,主要通过收集VMSTAT的信息来展现服务器状况。VMSTAT工具是最常见的UNIX监控工具,可以展现给定时间间隔的服务器的状态值。
        一般VMSTAT工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数。如:
$ 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 665016 254480 3405752    0    0    31    80   16   10  1  0 97  1
 0  0      0 665132 254480 3405756    0    0     0   114  786 1410  3  1 94  3
 2  0      0 665148 254480 3405756    0    0     0    34  564 1057  1  1 97  1
 0  0      0 665188 254480 3405756    0    0     0   530  627 1147  1  0 96  2
 0  0      0 664692 254480 3405756    0    0     0     6  680 1135  3  0 97  0
目前说来,对于服务器监控有用处的度量主要有:
r------运行队列
b------表示阻塞的进程的数量。
swpd-----代表虚拟内存使用的数量。
free -------代表空闲内存的数量。
buff--------代表作为缓冲区的内存的数量。
cache-------文件系统缓存使用的RAM数量。
si ------------从磁盘分页到内存的数量。
so----------从内存分页到磁盘的数量。
bi----------代表从硬盘读出的块数量。
bo---------代表写入硬盘的块数量。
us---------代表用户的进程所占的cpu百分比。
sy---------代表系统进程所占的cpu的百分比。
id----------系统空闲的cpu所占的百分比。
(如果r经常大于4 ,且id经常少于40,表示cpu的负荷很重。)
(如果bi,bo 长期不等于0,表示内存不足)


通过VMSTAT识别CPU瓶颈
r(运行队列)展示了正在执行和等待CPU资源的任务个数。当这个值超过了CPU数目,就会出现CPU瓶颈了


获得CPU个数的命令(LINUX环境):
cat /proc/cpuinfo|grep processor|wc -l
当r值超过了CPU个数,就会出现CPU瓶颈,解决办法大体几种:
1. 最简单的就是增加CPU个数
2. 通过调整任务执行时间,如大任务放到系统不繁忙的情况下进行执行,进尔平衡系统任务
3. 调整已有任务的优先级


通过VMSTAT识别CPU满负荷
首先需要声明一点的是,vmstat中CPU的度量是百分比的。当us+sy的值接近100的时候,表示CPU正在接近满负荷工作。但要注意的是,CPU 满负荷工作并不能说明什么,UNIX总是试图要CPU尽可能的繁忙,使得任务的吞吐量最大化。唯一能够确定CPU瓶颈的还是r(运行队列)的值。


free

通过VMSTAT识别RAM瓶颈
数据库服务器都只有有限的RAM,出现内存争用现象是Oracle的常见问题。
首先察看RAM的数量,命令如下(LINUX环境):
$ free
             total       used       free     shared    buffers     cached
Mem:       8167984    7502712     665272          0     254480    3406208
-/+ buffers/cache:    3842024    4325960
Swap:      9459708          0    9459708

free命令默认以k为单位输出结果,为便于阅读,可以加上-m或-g参数分别表示以MB或GB显示容量数值。


当然可以使用top等其他命令来显示RAM。
当内存的需求大于RAM的数量,服务器启动了虚拟内存机制,通过虚拟内存,可以将RAM段移到SWAP DISK的特殊磁盘段上,这样会 出现虚拟内存的页导出和页导入现象,页导出并不能说明RAM瓶颈,虚拟内存系统经常会对内存段进行页导出,但页导入操作就表明了服务器需要更多的内存了, 页导入需要从SWAP DISK上将内存段复制回RAM,导致服务器速度变慢。


解决的办法有几种:
1. 最简单的,加大RAM
2. 改小SGA,使得对RAM需求减少
3. 减少RAM的需求(如:减少PGA)


loadavg

利用/proc/loadavg监控CPU的平均负载文件内容如下:
$ cat /proc/loadavg
0.23 0.29 0.25 1/423 31052
这里的平均负载也就是可运行的进程的平均数
前三个值分别对应系统在5分钟、10分钟、15分钟内的平均负载
第四个值的分子是正在运行的进程数,分母是进程总数,最后一个是最近运行的进程ID号
现在我们将平均负载的值写到虚拟终端的标题栏上。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值