系统定位[开发人员须知的一些运维知识] 1 系统瓶颈的定位

最近研究系统定位,稍微总结一下,以后继承补充:

    第一篇 系统瓶颈的定位

    目标:

    明确linux系统的瓶颈所在,以及快速定位程序的问题

    场景:

    人物:小程和小维

    小维:过去看看,你的程序跑满CPU了,当初系统load average很高。

    小程:嗯,是喔。是不是JVM配的太小啦,加大点啊,难道这台机器要加内存呢?

    分析:

    相信很多友人都试过自己的程序把系统跑到满负载,怎么解决?最简单的方法应当就是加大内存了吧。

    真的能解决吗,我们看看下面准确的分析方法。

top - 16:44:01 up 1277 days, 20:51,  1 user,  load average: 0.00, 0.00, 0.00
Tasks: 214 total,   1 running, 213 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.1%us,  0.1%sy,  0.0%ni, 99.6%id,  0.2%wa,  0.0%hi,  0.0%si,  0.0%st
Mem: 1035136k total, 1016708k used, 18428k free, 73884k buffersSwap: 2076208k total, 1038104k used, 1038104k free, 112100k cached

    下面是top命令出来结果,里头有个很主要的指标是load average,它的含义是系统中处于运行状态的进程的队列长度。

    它一定程度反应了系统忙的程度,数值越大,表现系统越忙,用逗号分开的三个数值表现是最近1分钟,5分钟,15分钟的平均数。

    每日一道理
那蝴蝶花依然花开花落,而我心中的蝴蝶早已化作雄鹰飞向了广阔的蓝天。

    系统变忙,绝大多数load average都是变高的,但是这个变高只是表现排队等待CPU处置的进程队列变长,但是为什么会变长?

    
这就要看其他系统参数来肯定。

    
我简单把系统资源粗略的分成3大类:CPU,内存,IO。
还是通过下面的top命令结果,我们注意以下这句

    

Cpu(s):  0.1%us,  0.1%sy,  0.0%ni, 99.6%id,  0.2%wa,  0.0%hi,  0.0%si,  0.0%st

    具体每一个数值的含义我就不一一列出来,因为就算把那么多的含义列出来,读者真正记得的也只是自己想晓得的那几个,所以我这里就只说须要晓得的那个。

    我们判断IO是不是有瓶颈一般看wa就能够了,如果这个数字长时间达到50+的话,那么证明系统的IO已负荷过大,因为下面罗列的资源3大类来讲,IO是最容易瓶颈的,所以有经验的运维人员一般是排查IO是不是有问题。

    假如这一步就肯定是IO问题了,下面怎么继承呢?

    IO包含两方面:磁盘和网络两大块,磁盘可以用iostat这个工具来判断,网络可以用ifconfig和netstat来判断,具体这里就不展开了。

    接下面,假如IO没问题,那就先回归考察内存吧。

    我们的场景是java程序,java程序一个很主要的观点是JVM。

    

    准备吃饭了,先搁笔。。。有想看下去的友人,留个言,起码让我晓得这个话题值不值得写下去,谢谢大家了。

文章结束给大家分享下程序员的一些笑话语录: AdobeFlash拖垮Windows拖垮IE!又拖垮Linux拖垮Ubuntu拖垮FirxEox!还拖垮BSD拖垮MacOS拖垮Safri!简直无所不拖!AdobeFlash滚出网路世界!不要以为市占有率高就可以持续出烂货产品!以后替代品多得是!

--------------------------------- 原创文章 By
系统和定位
---------------------------------

posted @ 2013-05-26 23:33  xinyuyuanm  阅读(473)  评论(1编辑  收藏  举报