`

网站优化之系统瓶颈查找

阅读更多

http://tech.ddvip.com/2009-05/1241492625117675.html

  网站响应慢了,用户开始埋怨,老大安排你去优化,可是优化如何开始呢。
  优化开始前一定要理清思路,问自己,网站的瓶颈在哪里。
  系统的瓶颈在何方呢?如果你的系统有完善的监控分析系统的话,可以从统计数据和图形上
  看到大致的系统瓶颈所在,但是如果你的系统没有这些数据,你又如何来确定系统的瓶颈呢。
  按照一般的思路,我们对系统进行逻辑功能的划分,如静态服务器,动态服务器,数据库服务器,业务逻辑服务器。分别针对对这些服务器的带宽、内存使用、cpu使用率、磁盘使用情况进行分析,如对于动态服务器而言,其cpu的使用率一般情况下是其瓶颈;而对于静态文件服务器,由于其逻辑简单,但需要传输大量的文件,其出口的带宽很有可能是其瓶颈;对于数据库服务器,cpu和磁盘都有可能是瓶颈。

  我们可以通过如下几个方面来进行查找和排除:

  1 网络带宽
  带宽可能是最直接的一个瓶颈,可以很容易的估计到。
  假如运营商给你提供了10M的带宽,注意带宽的单位是bit,
  如果你的一个页面的大小是10K字节,那么一秒钟的最多的并发量这样计算:
  10*1024/8/10=128
  如果每秒并发超过这个数字,你的带宽就无法接受了。
  或者通过netstat命令来观察一下你的网络收发包的情况,使用netstat -s来观察一些统计 的数据,如果发现等待包队列里总是有大量的包待处理,一方面说明可能你的程序有问题,另一方面说明可能你的并发量太大,系统已经处理不过来了,可能已经开始丢包了。
  按照这个两个思路去检查吧。

  2 CPU
  如果带宽不是问题,又有这么大的并发量,下一个很容易是问题的就是你的cpu了。
  如果你的网站有大量的动态请求,如php操作数据库后再返回,cgi代码逻辑里有大量的排序等耗费cpu的操作,或者是你的cgi程序写的不好,会死循环,这时你的cpu就将成为瓶颈。
  在linux上试试top命令,看看你的机子的负载,通过最右上角的1分钟、5、15分钟采样的平均负载可以看到你的机子在一段时间内的一个负载情况,如果过去15分钟你的机子的负载大于你的cpu的数目*5,说明你的机子很繁忙了,很多进程都需要等待处理了。
  或者vmstat -n 1命令,看看你的cpu idle的时间有多少,等待处理的进程数量有多少,磁盘块的读写有多少。
  如果cpu idle的时间很少,或者等待处理的进程数量很多,说明你的系统比较繁忙。

  3 磁盘操作
  如果你的带宽很大,cpu比较的空闲,接下来的瓶颈很可能是磁盘的io操作了。
  从内存读取数据是相当快的,但是从硬盘读取数据是内存读取数据的50到100倍的时间,使用iostat -dx查看一下你的硬盘操作的情况,如果有大量的block阻塞着等待写入到硬盘,你需要检查一下你的代码,看看是否有大量的日志操作,或者写文件的操作阻塞住了。

  4 业务逻辑服务器响应慢
  如果上述都ok,而且你的cgi又连接到其它的业务逻辑服务器请求数据的情况,你需要检查你与业务逻辑服务器之间的连接是否正常,带宽是否够用,你的业务逻辑服务器的性能如何。

  5 内存不够用
  对于一些大容量缓存的业务服务器,如果缓存过多的内容,淘汰策略不好的话,会导致使用掉过多的内存,从而引起操作系统进行大量的swap交换,进而影响到系统的性能,成为瓶颈。
  通过ipcs -a观看系统的使用的共享内存的情况,如果共享内存使用太多的话,考虑较少一点共享内存的大小。
  使用free来来观察系统的内存使用情况,如果发现空闲的内存空间少,使用top命令,然后ctl+M看看
  那些进程占用了大量的内存,适当关掉一些进程,部署在其它的服务器上。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics