【51CTO独家特稿】现在各种网站对着用户和流量规模的逐年成倍增长,前台系统承受的压力也随之翻倍增加。如何缓解这种压力呢?目前有两种方法。***种方法,增加前台系统服务器的数量,在初期,通过不断增加服务器数量进行扩容,确实可以缓解这种压力。但是当服务器数量达到一定数量、一定规模之后,成本就成了一个很大的问题,于是就要启动第二种方法——优化,性能优化。
优化,大家都在说优化,现在各种系统都要优化,何时着手优化?优化时,需要注意什么?会不会对系统稳定性有影响?带着这一系列的问题,51CTO的记者在2011年QCon大会上,采访了淘宝网资深系统分析师蒋江伟先生。
51CTO:Java查询系统的性能优化瓶颈是否有什么预兆或特征,如何找到瓶颈所在?
蒋江伟:其实找瓶颈并没有想象中那么难。
首先可以大块大块的找,利用一些工具可以很快的帮工程师找到大的瓶颈在哪里,比如:瓶颈是由CPU导致的或是一些I/O导致的。
其次,对具体的细节,可能要运用到工程师的经验,当然也有一些工具可以帮助查找。淘宝有一些自己的小工具,利用这些小工具可以分析出每个Java类消耗CPU的时间,未来我们可能还会做一些内存方面的分析。
但是大部分还是要依靠工程师的经验,由每个工程师自己来判断小的瓶颈在哪里。工具大部分是给新人用的,可以帮助他们快速找到。
51CTO:找到瓶颈,做优化。做优化,需要注意什么?
蒋江伟:这里讲讲我们的经验吧。淘宝网可以说是一个不能出问题的网站。在外界看来,淘宝出了问题了,影响了别人的正常交易、买卖,恐怕会有很多人说:No。那么,淘宝还要不要优化?答案是肯定的,淘宝必须优化。优化之后,出了问题要怎么办?所以,我们做优化最需要注意的是:需要胆量。优化必须要做,所以要有承担结果的勇气,要有放手一搏的胆量。即使中途出错啦,我们要承认自己的错误。
但是,大家都不想出错,如何避免出错呢?很重要的一方面的人员的素质,除此之外,还需要一些系统的工作。我们推荐优化的时候,要一点一点的优化。但是当遇到必须大规模优化时,比如对框架的优化,除了要做好Beta测试之外,还要做好回滚。一旦出了问题,马上进行回滚。其实优化不是什么深奥的事物,只要有胆量去做,基本就不会有什么问题。
51CTO:优化是否对稳定性有影响?
蒋江伟:优化与稳定性关系不是很大。甚至可以说优化对系统的稳定性还有好处。单机的容量越高,处理事务的能力就越好。当然优化还能会导致系统稳定性出现一些问题,出了问题怎么办?回滚。优化肯定有风险,但是好处远远大于坏处。所以要有勇气,勇敢做下去。
51CTO:如何增强网站的持久稳定性?
蒋江伟:去年,有人说淘宝的稳定性一定要做,但是要怎么做?答:监控。除了监控呢?答:代码的容错能力和系统的容错能力一定要加强。经过我们研究,稳定性是有一些规律的。可以用“稳定性”这么一个大系统来保障淘宝系统的稳定性。去年针对稳定性,我们做了三件事:
***件,容量。我们对所有系统的容量做了预估,只有了解了自己系统的容量,才能在高峰时做出最及时的应对措施。
第二件,依赖性。淘宝的每位工程师要大概了解自己负责的系统的依赖关系,做出系统性的依赖关系。
第三件,了解整个系统。运行时系统的一个监控,数据,包括操作系统,中间界得,硬件的,还有一些业务上的,都要透明出来。
我们产品技术部的稳定性做到不可用的时间控制在140分钟内。全年事故导致的不可用只有24分钟。
51CTO:您能对工程师说些什么吗?
蒋江伟:我就说两个字:承担。只有勇于承担,才能让人有勇气,有承担自己的错误的勇气。有承担错误的勇气,就有去做事得勇气。无论做什么事,只要是对的,就要去做,勇敢去做。出了错误,承担错误,改正错误,这样的人没有人会去责怪。
#p#
编者语
蒋江伟先生在本次专访中反复强调“承担”二字。做优化,就要有做的勇气,有承担错误和压力的勇气,只有这样做才有继续做下去的勇气,才能把优化做到***。请记住“承担”二字。
【编辑推荐】