最近研究系统定位,稍微总结一下,以后继承补充:
第一篇 系统瓶颈的定位
目标:
明确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
系统和定位
---------------------------------