5月 172012
 

应用按四个点:
1.CPU(CPU分时量)
2.memory
3.I/O
4.network
================
一 网络问题
   1先保证带宽质量 可以使用一些工具看看流量多不多,延迟大不大,这方面工具很多,不举例。
    我还遇到过最恶心的是客户端开迅雷,BT,然后抱怨说网站慢,真心太阳。
   2排除dns问题,测试的时候可以写hosts文件

二 内存问题

   可以使用vmstat命令实时查看状态,关注si ,so ,wa,如果si,so,比较大,说明内存和swap有交互,同时应该wa(io等待)也会增大,另外由于程序在cpu中频繁切换,cs上下文也会比正常情况下大。这样就可以基本确定是内存问题 具体的表面现像是cpu耗尽,原因是内存不够引起swap交换,引起io增加,引起cpu资源耗尽。

  解决方法加内存

三 IO问题

    关注vmstat 输出中的bi bo ,这两个值代表数据块的读写,如果比较大,并且si so没有什么变化,代表有硬盘读写,但是不涉及到swap, 并配合wa的输出来确认是不是发生大量io等待。如果有代表是因为硬盘读写数据过慢,导致iowait过大,具体的表面现像是cpu耗尽,原因是硬盘读写过多,太慢,引起io增加,引起cpu资源耗尽。

    解决方法 增加IO能力,硬盘做raid。

四:cpu问题

    查看vmstat 输出中的 r,b两列,看看是否有正在运行的进程,和等待进程,如果正在运行进程数量比你的cpu核数多,说明cpu超负载了,同时看看bi bo的情况,如果没什么数据读写,说明没IO问题,cpu的纯做运算,这时us(用户态进程占用CPU比率)的输出应该会比较高,说明是cpu不够。

    解决方法 增加cpu 或者添加多机做lvs集群。

以上只是草草分析,真实情况会复杂的多,比如 发现是io 还要cat /proc/diskstats 确定是哪个分区读写多,IOPS是否超过硬盘的能力,top 和fuser看哪个应用程序读,看应用日志程序日志和系统日志或者strace看在读什么东西 ,然后做相应优化。

    调优不是一步两步可以完成的,要考虑很多问题,建议你下次在给出问题的时候能够再具体化些能将用过的监控命令的数据值贴出来一起分析,否则很难给出正确的解决方法。

    路漫漫其修远,祝你能调优成功。

 回复

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>