少年阿宾

那些青春的岁月

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  500 Posts :: 0 Stories :: 135 Comments :: 0 Trackbacks

通过什么方法来排查是否linux服务器的负载过大?

通过top命令来查看服务器负载

 再对此Linux服务器性能分析之前,先了解下Linux系统Load average负载的知识,负载均值在uptime 或者top 命令中可以看到,它们可能会显示成这个样子:load average: 0.15, 0.14, 0.11
很多人会这样理解负载均值:三个数分别代表不同时间段的系统平均负载(一分钟、五分钟、以及十五分钟),它们的数字当然是越小越好。数字越高,说明服务器的负载越大,这也可能是服务器出现某种问题的信号。

     一个单核的处理器可以形象得比喻成一条单车道。如果前面没有车辆在等待,那么你可以告诉后面的司机通过。如果车辆众多,那么需要告知他们可能需要稍等一会。

因此,需要些特定的代号表示目前的车流情况,例如:
  0.00 表示目前桥面上没有任何的车流。实际上这种情况与0.00 和1.00 之间是相同的,总而言之很通畅,过往的车辆可以丝毫不用等待的通过。
  1.00 表示刚好是在这座桥的承受范围内。这种情况不算糟糕,只是车流会有些堵,不过这种情况可能会造成交通越来越慢。
  超过1.00,那么说明这座桥已经超出负荷,交通严重的拥堵。那么情况有多糟糕?例如2.00 的情况说明车流已经超出了桥所能承受的一倍,那么将有多余过桥一倍的车辆正在焦急的等待。3.00 的话情况就更不妙了,说明这座桥基本上已经快承受不了,还有超出桥负载两倍多的车辆正在等待。
    上面的情况和处理器的负载情况非常相似。一辆汽车的过桥时间就好比是处理器处理某线程的实际时间。Unix 系统定义的进程运行时长为所有处理器内核的处理时间加上线程在队列中等待的时间。
    和收过桥费的管理员一样,你当然希望你的汽车(操作)不会被焦急的等待。所以,理想状态下,都希望负载平均值小于1.00 。当然不排除部分峰值会超过1.00,但长此以往保持这个状态,就说明会有问题,这时候你应该会很焦急。
      “所以你说的理想负荷为1.00 ?”
    嗯,这种情况其实并不完全正确。负荷1.00 说明系统已经没有剩余的资源了。在实际情况中,有经验的系统管理员都会将这条线划在0.70:
      “需要进行调查法则”:如果长期你的系统负载在0.70 上下,那么你需要在事情变得更糟糕之前,花些时间了解其原因。
      “现在就要修复法则”:1.00 。如果你的服务器系统负载长期徘徊于1.00,那么就应该马上解决这个问题。否则,你将半夜接到你上司的电话,这可不是件令人愉快的事情。
      “凌晨三点半锻炼身体法则”:5.00。如果你的服务器负载超过了5.00 这个数字,那么你将失去你的睡眠,还得在会议中说明这情况发生的原因,总之千万不要让它发生。
    那么多个处理器呢?我的均值是3.00,但是系统运行正常!哇喔,你有四个处理器的主机?那么它的负载均值在3.00 是很正常的。在多处理器系统中,负载均值是基于内核的数量决定的。以100% 负载计算,1.00 表示单个处理器,而2.00 则说明有两个双处理器,那么4.00 就说明主机具有四个处理器。
  回到我们上面有关车辆过桥的比喻。1.00 我说过是“一条单车道的道路”。那么在单车道1.00 情况中,说明这桥梁已经被车塞满了。而在双处理器系统中,这意味着多出了一倍的负载,也就是说还有50% 的剩余系统资源- 因为还有另外条车道可以通行。
所以,单处理器已经在负载的情况下,双处理器的负载满额的情况是2.00,它还有一倍的资源可以利用。
 

从上图的top命令可以了解到,Linux服务器运行了5天23小时20分,在load average的数据来看,这台快吧Linux无盘服务器可以说是压力为零,运行十分流畅。 

方法二:输入iostat -x -k -t 

说明:%util:一秒中有百分之多少的时间用于I/O操作,或者说一秒中有多少时间I/O队列是非空的。
即delta(use)/s/1000 (因为use的单位为毫秒)
如果%util接近100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。

方法三:

如果玩游戏很卡,可以用hdparm –t /dev/磁盘名称来测试磁盘性能是否达标,下图是单个希捷1T的盘测试的结果说明:sd表示硬盘是SATA,SCSI或者SAS,a表示串口的第一块硬盘

 本文转摘自:http://www.flybaaa.com/help/69_1.html



 

一直以来以为通过top然后按数字1键,查到的cpu个数是服务器的物理cpu个数,今天在看服务器的硬件配置清单中发现一服务器的物理cpu个数是4个,我就奇怪了,这台机子我的影响很深,明明是48啊,当时通过top 1查看cpu信息还提示 “Sorry ,terminal is not big enough”。想当初服务器只能识别到32个。还是重新编译内核搞定的。后来经过查询原来不是这样滴,top 1查看的是逻辑cpu个数,一下为记。
查看Linux服务器的CPU详细情况
判断Linux服务器CPU情况的依据如下:
具有相同core id的CPU是同一个core的超线程。(Any cpu with the same core id are hyperthreads in the same core.)
具有相同physical id的CPU是同一个CPU封装的线程或核心。(Any cpu with the same physical id are threads or cores in the same physical socket.)
下面举例说明。
物理CPU个数如下:

[root@dbabc.net ~]# cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l 4

每个物理CPU中core的个数(即核数)如下:

[root@dbabc.net ~]# cat /proc/cpuinfo| grep "cpu cores"| uniq cpu cores       : 12

逻辑CPU的个数如下:

[root@dbabc.net ~]#cat /proc/cpuinfo| grep "processor"| wc -l 48

按理说物理CPU个数×核数就应该等于逻辑CPU的


Dbabc.Net [http://dbabc.net]
本文链接:http://dbabc.net/archives/2012/02/13/linux-cpu-info-count.shtml

posted on 2014-12-24 13:34 abin 阅读(470) 评论(0)  编辑  收藏 所属分类: linux

只有注册用户登录后才能发表评论。


网站导航: