blogjava-凯发k8网页登录
blogjava-凯发k8网页登录http://www.blogjava.net/bluedavy/category/32839.html理论不懂就实践,实践不会就学理论!zh-cntue, 04 may 2010 17:06:03 gmttue, 04 may 2010 17:06:03 gmt60- code show: 网络访问超时优化http://www.blogjava.net/bluedavy/archive/2010/05/04/320080.htmlbluedavybluedavytue, 04 may 2010 14:41:00 gmthttp://www.blogjava.net/bluedavy/archive/2010/05/04/320080.htmlhttp://www.blogjava.net/bluedavy/comments/320080.htmlhttp://www.blogjava.net/bluedavy/archive/2010/05/04/320080.html#feedback0http://www.blogjava.net/bluedavy/comments/commentrss/320080.htmlhttp://www.blogjava.net/bluedavy/services/trackbacks/320080.html阅读全文
]]> - 大型应用与soahttp://www.blogjava.net/bluedavy/archive/2010/04/16/318503.htmlbluedavybluedavyfri, 16 apr 2010 04:44:00 gmthttp://www.blogjava.net/bluedavy/archive/2010/04/16/318503.htmlhttp://www.blogjava.net/bluedavy/comments/318503.htmlhttp://www.blogjava.net/bluedavy/archive/2010/04/16/318503.html#feedback0http://www.blogjava.net/bluedavy/comments/commentrss/318503.htmlhttp://www.blogjava.net/bluedavy/services/trackbacks/318503.html阅读全文
]]> - 《web容量规划的艺术》书评http://www.blogjava.net/bluedavy/archive/2010/04/14/318234.htmlbluedavybluedavywed, 14 apr 2010 02:35:00 gmthttp://www.blogjava.net/bluedavy/archive/2010/04/14/318234.htmlhttp://www.blogjava.net/bluedavy/comments/318234.htmlhttp://www.blogjava.net/bluedavy/archive/2010/04/14/318234.html#feedback0http://www.blogjava.net/bluedavy/comments/commentrss/318234.htmlhttp://www.blogjava.net/bluedavy/services/trackbacks/318234.html阅读全文
]]> - unicorn给twitter带来的效果http://www.blogjava.net/bluedavy/archive/2010/04/10/317903.htmlbluedavybluedavyfri, 09 apr 2010 16:16:00 gmthttp://www.blogjava.net/bluedavy/archive/2010/04/10/317903.htmlhttp://www.blogjava.net/bluedavy/comments/317903.htmlhttp://www.blogjava.net/bluedavy/archive/2010/04/10/317903.html#feedback1http://www.blogjava.net/bluedavy/comments/commentrss/317903.htmlhttp://www.blogjava.net/bluedavy/services/trackbacks/317903.html阅读全文
]]> - 从超市收银故事看互联网技术http://www.blogjava.net/bluedavy/archive/2010/03/29/316806.htmlbluedavybluedavymon, 29 mar 2010 05:20:00 gmthttp://www.blogjava.net/bluedavy/archive/2010/03/29/316806.htmlhttp://www.blogjava.net/bluedavy/comments/316806.htmlhttp://www.blogjava.net/bluedavy/archive/2010/03/29/316806.html#feedback0http://www.blogjava.net/bluedavy/comments/commentrss/316806.htmlhttp://www.blogjava.net/bluedavy/services/trackbacks/316806.htmlhttp://bluedavy.com/?p=23,本篇blog从看一个超市发展的过程中,收银碰到的问题以及凯发天生赢家一触即发官网的解决方案来阐述互联网的技术。
]]> - 杭州程序员圆桌交流第一期–并发编程ppthttp://www.blogjava.net/bluedavy/archive/2010/03/19/315989.htmlbluedavybluedavyfri, 19 mar 2010 15:57:00 gmthttp://www.blogjava.net/bluedavy/archive/2010/03/19/315989.htmlhttp://www.blogjava.net/bluedavy/comments/315989.htmlhttp://www.blogjava.net/bluedavy/archive/2010/03/19/315989.html#feedback1http://www.blogjava.net/bluedavy/comments/commentrss/315989.htmlhttp://www.blogjava.net/bluedavy/services/trackbacks/315989.html阅读全文
]]> - soa@ebay读后感http://www.blogjava.net/bluedavy/archive/2010/02/23/313701.htmlbluedavybluedavytue, 23 feb 2010 05:15:00 gmthttp://www.blogjava.net/bluedavy/archive/2010/02/23/313701.htmlhttp://www.blogjava.net/bluedavy/comments/313701.htmlhttp://www.blogjava.net/bluedavy/archive/2010/02/23/313701.html#feedback2http://www.blogjava.net/bluedavy/comments/commentrss/313701.htmlhttp://www.blogjava.net/bluedavy/services/trackbacks/313701.html阅读全文
]]> - 在java中使用协程(coroutine)http://www.blogjava.net/bluedavy/archive/2010/01/28/311148.htmlbluedavybluedavythu, 28 jan 2010 15:16:00 gmthttp://www.blogjava.net/bluedavy/archive/2010/01/28/311148.htmlhttp://www.blogjava.net/bluedavy/comments/311148.htmlhttp://www.blogjava.net/bluedavy/archive/2010/01/28/311148.html#feedback22http://www.blogjava.net/bluedavy/comments/commentrss/311148.htmlhttp://www.blogjava.net/bluedavy/services/trackbacks/311148.html阅读全文
]]> - 继续观看ebay的技术发展http://www.blogjava.net/bluedavy/archive/2009/11/16/302585.htmlbluedavybluedavymon, 16 nov 2009 09:19:00 gmthttp://www.blogjava.net/bluedavy/archive/2009/11/16/302585.htmlhttp://www.blogjava.net/bluedavy/comments/302585.htmlhttp://www.blogjava.net/bluedavy/archive/2009/11/16/302585.html#feedback4http://www.blogjava.net/bluedavy/comments/commentrss/302585.htmlhttp://www.blogjava.net/bluedavy/services/trackbacks/302585.html阅读全文
]]> - 【转】王速瑜和我参加架构师接龙的对话http://www.blogjava.net/bluedavy/archive/2009/09/06/294045.htmlbluedavybluedavysun, 06 sep 2009 03:52:00 gmthttp://www.blogjava.net/bluedavy/archive/2009/09/06/294045.htmlhttp://www.blogjava.net/bluedavy/comments/294045.htmlhttp://www.blogjava.net/bluedavy/archive/2009/09/06/294045.html#feedback5http://www.blogjava.net/bluedavy/comments/commentrss/294045.htmlhttp://www.blogjava.net/bluedavy/services/trackbacks/294045.html阅读全文
]]> - 【译】可伸缩性最佳实践http://www.blogjava.net/bluedavy/archive/2009/08/19/291794.htmlbluedavybluedavywed, 19 aug 2009 06:41:00 gmthttp://www.blogjava.net/bluedavy/archive/2009/08/19/291794.htmlhttp://www.blogjava.net/bluedavy/comments/291794.htmlhttp://www.blogjava.net/bluedavy/archive/2009/08/19/291794.html#feedback4http://www.blogjava.net/bluedavy/comments/commentrss/291794.htmlhttp://www.blogjava.net/bluedavy/services/trackbacks/291794.html阅读全文
]]> - 旁观者看ebay技术发展http://www.blogjava.net/bluedavy/archive/2009/07/24/288055.htmlbluedavybluedavythu, 23 jul 2009 16:39:00 gmthttp://www.blogjava.net/bluedavy/archive/2009/07/24/288055.htmlhttp://www.blogjava.net/bluedavy/comments/288055.htmlhttp://www.blogjava.net/bluedavy/archive/2009/07/24/288055.html#feedback5http://www.blogjava.net/bluedavy/comments/commentrss/288055.htmlhttp://www.blogjava.net/bluedavy/services/trackbacks/288055.html阅读全文
]]> - 网站架构相关ppt、文章整理(更新于2009-7-15)http://www.blogjava.net/bluedavy/archive/2009/04/28/267970.htmlbluedavybluedavytue, 28 apr 2009 12:29:00 gmthttp://www.blogjava.net/bluedavy/archive/2009/04/28/267970.htmlhttp://www.blogjava.net/bluedavy/comments/267970.htmlhttp://www.blogjava.net/bluedavy/archive/2009/04/28/267970.html#feedback39http://www.blogjava.net/bluedavy/comments/commentrss/267970.htmlhttp://www.blogjava.net/bluedavy/services/trackbacks/267970.html阅读全文
]]> - qcon北京大会之行http://www.blogjava.net/bluedavy/archive/2009/04/10/264842.htmlbluedavybluedavyfri, 10 apr 2009 06:49:00 gmthttp://www.blogjava.net/bluedavy/archive/2009/04/10/264842.htmlhttp://www.blogjava.net/bluedavy/comments/264842.htmlhttp://www.blogjava.net/bluedavy/archive/2009/04/10/264842.html#feedback5http://www.blogjava.net/bluedavy/comments/commentrss/264842.htmlhttp://www.blogjava.net/bluedavy/services/trackbacks/264842.html知名的嘉宾,此次大会出现的嘉宾绝对足够重量级,看看title就吓人了:spring老大、thoughtworks首席科学家、dojo creator、ebay搜索核心架构师、amazon云计算战略师、淘宝首席架构师、支付宝首席架构师、豆瓣技术总监、优酷首席架构师、网易有道技术总监等等。
精彩的topic,不是说嘉宾知名topic就一定精彩的,不能不说,这次大会还是有些爆冷门的,嘉宾不是很知名,但演讲的topic确实还不错,而且也不是说知名的嘉宾就一定能给出精彩的topic,就像martin fowler这次的topic,实在称不上精彩,总体而言,这次大会并不缺少精彩的topic,来分享下我的收获。
]]> - 大型网站架构演变和知识体系http://www.blogjava.net/bluedavy/archive/2008/09/03/226749.htmlbluedavybluedavywed, 03 sep 2008 11:12:00 gmthttp://www.blogjava.net/bluedavy/archive/2008/09/03/226749.htmlhttp://www.blogjava.net/bluedavy/comments/226749.htmlhttp://www.blogjava.net/bluedavy/archive/2008/09/03/226749.html#feedback78http://www.blogjava.net/bluedavy/comments/commentrss/226749.htmlhttp://www.blogjava.net/bluedavy/services/trackbacks/226749.html阅读全文
]]> - 外行人谈压力测试http://www.blogjava.net/bluedavy/archive/2008/07/25/217514.htmlbluedavybluedavyfri, 25 jul 2008 09:40:00 gmthttp://www.blogjava.net/bluedavy/archive/2008/07/25/217514.htmlhttp://www.blogjava.net/bluedavy/comments/217514.htmlhttp://www.blogjava.net/bluedavy/archive/2008/07/25/217514.html#feedback2http://www.blogjava.net/bluedavy/comments/commentrss/217514.htmlhttp://www.blogjava.net/bluedavy/services/trackbacks/217514.html
明确压力测试的目标
通常来说(注意是通常),压力测试的目标有这么几点:
1、评测系统是否满足压力支撑的要求
要评测系统是否满足压力支撑的要求,同样要做的就是需要明确定义系统需要支撑多大的压力,例如:
机器的配置:cpu、内存、硬盘、etc.
网络条件:100m
操作系统:linux core: 2.6
当并发数为10用户时,系统应能在20ms内响应完毕(这个时候的tps为500),系统的load需在2以下;当并发数为100用户时,系统应能在50ms内响应完毕(这个时候的tps为2000),系统的load需在4以下;当并发数为200用户时,系统应能在80ms内响应完毕(这个时候的tps为2500),允许其中有千分之一的出错率,系统的load需在6以下,在压力测试的过程中,只要其中的任何指标未达到,均可判定系统尚未达到压力的目标。
实际的压力测试的这个指标会比我这里举的例子复杂很多,例如还需要考虑网络流量、内存消耗、iops、连接数等等。
这里面压力测试隐藏的目标是为容量规划提供一定的指导,例如目前的系统在某种配置的情况下单台机器能承受的最大并发数为100用户,那么如果系统的高峰压力是1000的话,如果系统支撑无损水平扩展的话就意味着需要10台这类配置的机器,这一步同样是经过测试的。
2、预估系统上线运行的状况
毕竟通常压力测试环境和线上的环境是会有很大的不同的,压力、数据量、硬件环境等,基本上只能是根据线下的环境的情况进行一定比例的对比后计算来预估,这里面很重要的是要预估系统上线后正常情况下的表现状况、一定的增长比率后的运行状况以及风险点(例如当并发用户数增长到多少时、系统load到多少时可能会出现问题)。
这一个目标我觉得非常难达到,但随着经验,我相信是可以做到的,如果能做到这种效果的话是会有很大的帮助的。
以上这个两个目标基本是压力测试都要达到或希望达到的,而具体有可能会因为系统的业务的具体情况会制定其他不同的目标。
制定压力测试方案
这步是压力测试整个过程中最难的步骤之一,为了能够测试出系统是否符合压力支撑的要求以及评估上线的表现,通常我们会希望搭建出和生产环境完全相同的环境,但这就是最麻烦的一点了,基本上是不太可能的,因此通常能采取的方法会是:
1、做等比例的缩放
按照生产环境的情况做一定比例的缩放,例如生产环境的数据量为1亿条,那么测试环境等比缩放到5000w条,生产环境的处理速度的情况...;
2、更差环境、更高压力的测试
采取比生产环境更差的机器配置、网络环境来进行测试,例如ebay的要求是能够承受10x的压力。
3、仿真测试
据资深人士而言,仿真测试要做到基本是不太可能的,仿真测试首先要求的是收集到生产环境中的运行状态的数据,然后在测试环境中编写程序来做到模拟生产环境运行的效果,这个难度基本是非常高的。
我自己现在做压力测试更多采取的做法是以上三种方法的合集。
在确定了测试方法后,就基本可以确定压力测试的环境了,环境确定好后需要做的是压力测试的案例或场景了,在压力测试的案例中需要涵盖正常场景以及异常的场景,正常场景是非常容易做出来的,只是需要根据生产环境收集的数据(例如不同级别的用户比例通常是7:2:1)或预估的数据来搭建相应的测试案例,异常场景则是比较复杂的,需要考虑很多的因素,例如数据库出现异常、网络出现异常等,这里我觉得通常的做法是画出正常场景的处理流程,然后划分交互边界的信任边界,对于所有的第三方交互都认为是不可信任,例如不能信任调用数据库是一定会快的,或一定会成功的,在异常场景中应涵盖这些信任边界的异常状况的测试,这些对于高可用性的系统而言是非常重要的,几个9的成败就在此了,^_^,当然,高可用性又是个更复杂的话题,不在这里讲。
在压力测试方案中还需确定的是考评的指标,通过会包括:tps、系统load等等。
进行压力测试
相对来讲,在有了压力测试方案后,这一步并不是什么太复杂的事情,只是需要选择一个和压力测试方案比较符合的工具来执行,例如jmeter、loadrunner等,当然,这些工具相对来说也是比较复杂的,而且之间的差距也是比较大的,至少目前来看,jmeter和loadrunner的差距还是不小的,尤其是需要进行高压力的测试时。
分析压力测试结果
这步同样是压力测试中很难的一步,在这一步需要做出的根据压力测试的结果分析出系统的具体表现情况,判定系统是否能够满足压力指标。
以loadrunner产生的分析结果图而言,通常需要分析以下图:
1、total transactions per second
这张图中显示了系统在进行压力测试过程的tps的变化情况,从这张图中我们可以看到系统的tps的情况,通常来讲,随着用户数的增加,tps应该是呈一定比率的增长的,等增长到一定程度后会达到瓶颈,甚至开始下降,这也是tps的瓶颈值了,这张图可以帮助我们评估系统的tps是否符合要求。
另外,在这张图中,我们可以看到系统从什么时候开始出现出错的transactions,从而判断出错率是否在可接受的范围。
2、transaction response time under load
这张图非常的重要,借助这张图我们可以分析随着用户数增加的情况下,系统的劣化状况,最佳状况当然是一条直线,但这基本是不可能的,毕竟资源是有限的,需要判断的是劣化的程度是否为可接受范畴。
另外就是需要关注数据中90%的用户的响应时间的状况,如果少量用户响应慢是可接受的话,那么有可能在之上指标不达标的情况下仍然满足了压力指标。
3、unix resources
这张系统load图自然是非常的重要,借助这张图大致可以判断系统随着用户数的增长消耗的资源的变化情况,这对于调优以及容量规划而言是很重要的,但还是得取决于应用本身,:)。
loadrunner还提供了其他方面很多的图,可以根据考评的要求来自行进行分析。
寻找瓶颈并进行调优以达到目标
这步不属于压力测试范畴,但还是在这里稍微讲讲,毕竟压力测试结束后如果系统没达标的话就必须进行这步了。
寻找瓶颈,这自然是非常难的事了,通常系统达不到要求的状况都会是随着用户的增长,响应时间劣化的过于厉害,在这样的情况下首先得观察系统硬件资源的变化情况,如果是硬件资源耗尽的话,需要查查为什么资源被耗尽,假设最后判断确实需要耗费这么多的硬件资源的话,也许需要考虑增加硬件资源或是水平扩展,否则的话可能需要从软件层面相应的优化系统了,这样的话可以进入下一步了。
如果不是硬件资源的限制的话,得在系统中从头到尾设置时间跟踪filter,从而判断响应时间劣化的原因,看看是系统中哪些步骤造成的,这个是细致活了,有可能要查非常久。
其实这里说的还是相当的简单了,在寻找瓶颈的过程中是个非常繁琐的过程,需要不断的尝试,硬件的增加、os的调优、jvm的调优以及软件系统本身的调优等等,这些很多时候需要的是经验,因此某知名人士曾经说过如何寻找瓶颈和调优,其中依靠的一点就是直觉,^_^。
当然,在寻找瓶颈的过程中,可以借助os的工具、java的工具(例如gc打印、jprofiler等)来进行查找。
(ps: 不过感觉很多情况下都是应用本身造成的性能瓶颈,在写程序时稍不注意用错一个数据结构都有可能会导致比较大的问题,所以我现在查找瓶颈的时候更多的还是先从软件本身下手,只是软件性能要做到提升通常来付出较大的代价,这个时候需要权衡)
调优基本上要求对硬件、os、jdk、数据库甚至软件的实现方式等都要有非常深入的理解,至少要能做到判断出瓶颈因素,然后找相应领域的专家来解决,因此要求是非常高的。
关于性能调优的知识体系这里有篇不错的文章:
http://www.cnblogs.com/jackei/archive/2008/06/27/1231307.html
话题太大了,写到最后发现基本上还是有些泛泛而谈了,后面会针对这里的每一步来做更为细致的实例的讲述吧,不过毕竟是外行人,肯定有很多不对的地方,欢迎大家指正、拍砖。
]]> - 【译】构建可扩展的java ee应用(二)http://www.blogjava.net/bluedavy/archive/2008/07/10/213988.htmlbluedavybluedavythu, 10 jul 2008 07:42:00 gmthttp://www.blogjava.net/bluedavy/archive/2008/07/10/213988.htmlhttp://www.blogjava.net/bluedavy/comments/213988.htmlhttp://www.blogjava.net/bluedavy/archive/2008/07/10/213988.html#feedback2http://www.blogjava.net/bluedavy/comments/commentrss/213988.htmlhttp://www.blogjava.net/bluedavy/services/trackbacks/213988.html阅读全文
]]> - 【译】构建可扩展的java ee应用(一)http://www.blogjava.net/bluedavy/archive/2008/07/07/213179.htmlbluedavybluedavymon, 07 jul 2008 15:15:00 gmthttp://www.blogjava.net/bluedavy/archive/2008/07/07/213179.htmlhttp://www.blogjava.net/bluedavy/comments/213179.htmlhttp://www.blogjava.net/bluedavy/archive/2008/07/07/213179.html#feedback16http://www.blogjava.net/bluedavy/comments/commentrss/213179.htmlhttp://www.blogjava.net/bluedavy/services/trackbacks/213179.html阅读全文
]]> - jsp的request session的有效时间应合理设置http://www.blogjava.net/bluedavy/archive/2008/07/03/212370.htmlbluedavybluedavythu, 03 jul 2008 08:24:00 gmthttp://www.blogjava.net/bluedavy/archive/2008/07/03/212370.htmlhttp://www.blogjava.net/bluedavy/comments/212370.htmlhttp://www.blogjava.net/bluedavy/archive/2008/07/03/212370.html#feedback13http://www.blogjava.net/bluedavy/comments/commentrss/212370.htmlhttp://www.blogjava.net/bluedavy/services/trackbacks/212370.html阅读全文
]]> - 性能调优概述http://www.blogjava.net/bluedavy/archive/2008/06/29/211558.htmlbluedavybluedavysun, 29 jun 2008 15:37:00 gmthttp://www.blogjava.net/bluedavy/archive/2008/06/29/211558.htmlhttp://www.blogjava.net/bluedavy/comments/211558.htmlhttp://www.blogjava.net/bluedavy/archive/2008/06/29/211558.html#feedback10http://www.blogjava.net/bluedavy/comments/commentrss/211558.htmlhttp://www.blogjava.net/bluedavy/services/trackbacks/211558.html阅读全文
]]>