会员登录 | 会员注册 | 意见建议 | 网站地图

站长资源综合门户

当前位置:首页 > 站长学院 > 建站经验 > 性能调优攻略

性能调优攻略

时间:2012-06-21 18:30:55   作者:   来源:   点击:

关于性能优化这是一个比较年夜的话题,在《由12306谈谈网站性能手艺》中我从业务和设计上说过一些可用的手艺以及那些手艺的优缺点,今天,想从一些手艺细节上谈谈性能优化,主要是一些代码级别的手艺和体例。本文的东西是我的一些经验和知识,其实不一定全对,希望年夜家指正和弥补

在起头这篇文章之前,年夜家可以移步去看一下酷壳以前颁发的《代码优化概要》,这篇文章根基上奉告你——要进行优化,先得找到性能瓶颈! 可是在讲如何定位系统性能瓶劲之前,请让我讲一下系统性能的定义和测试,因为没有这两件事,后面的定位和优化无从谈起。

一、系统性能定义

让我们先来讲说如何什么是系统性能。这个定义很是关头,如果我们不清楚什么是系统性能,那么我们将无法定位之。我见过很多朋友会感觉这很容易,可是仔细一问,其实他们并没有一个比较系统的体例,所以,在这里我想奉告年夜家如何系统地来定位性能。 总体来讲,系统性能就是两个事:

  1. Throughput ,吞吐量。也就是每秒钟可以措置的请求数,任务数。
  2. Latency, 系统延迟。也就是系统在措置一个请求或一个任务时的延迟。

一般来讲,一个系统的性能受到这两个条件的约束,缺一不成。比如,我的系统可以顶得住一百万的并发,可是系统的延迟是2分钟以上,那么,这个一百万的负载毫无意义。系统延迟很短,可是吞吐量很低,同样没有意义。所以,一个好的系统的性能测试必定受到这两个条件的同时作用。 有经验的朋友一定知道,这两个东西的一些关系:

  • Throughput越年夜,Latency会越差。因为请求量过年夜,系统太忙碌,所以响应速度自然会低。
  • Latency越好,能支持的Throughput就会越高。因为Latency短说明措置速度快,于是便可以措置更多的请求。

2、系统性能测试

颠末上述的说明,我们知道要测试系统的性能,需要我们收集系统的Throughput和Latency这两个值。

  • 首先,需要定义Latency这个值,比如说,对网站系统响应时间必须是5秒以内(对某些实时系统可能需要定义的更短,比如5ms以内,这个更按照不合的业务来定义)
  • 其次,开辟性能测试东西,一个东西用来制造高强度的Throughput,另外一个东西用来丈量Latency。对第一个东西,你可以参考一下"十个免费的Web压力测试东西",关于如何丈量Latency,你可以在代码中丈量,可是这样会影响法度的执行,并且只能测试到法度内部的Latency,真正的Latency是整个系统都算上,包含操作系统和网络的延时,你可使用Wireshark来抓网络包来丈量。这两个东西具体怎么做,这个还请年夜家自己思考去了。
  • 最后,起头性能测试。你需要不竭地提升测试的Throughput,然后不雅察系统的负载情况,如果系统顶得住,那就不雅察Latency的值。这样,你便可以找到系统的最年夜负载,并且你可以知道系统的响应延时是多少。

再多说一些,

  • 关于Latency,如果吞吐量很少,这个值估计会很是稳定,当吞吐量越来越年夜时,系统的Latency会呈现很是猛烈的颤栗,所以,我们在丈量Latency的时候,我们需要注意到Latency的散布,也就是说,有百分之几的在我们允许的范围,有百分之几的超出了,有百分之几的完全不成接管。也许,平均下来的Latency达标了,可是其中唯一50%的达到了我们可接管的范围。那也没有意义。
  • 关于性能测试,我们还需要定义一个时间段。比如:在某个吞吐量上延续15分钟。因为当负载达到的时候,系统会变得不稳定,当过了一两分钟后,系统才会稳定。别的,也有多是,你的系统在这个负载下前几分钟还表示正常,然后就不稳定了,甚至垮了。所以,需要这么一段时间。这个值,我们叫做峰值极限。
  • 性能测试还需要做Soak Test,也就是在某个吞吐量下,系统可以延续跑一周甚至更长。这个值,我们叫做系统的正常运行的负载极限。

性能测试有很多很复要的东西,比如:burst test等。 这里不克不及一一详述,这里只说了一些和性能调优相关的东西。总之,性能测试是一细活和累活。

分享到:

网友评论

热门建站经验