07 2008 档案
摘要: 不是专职做压力测试这行当的,只能是以自己的经验来以外行人的眼光来说说压力测试,压力测试并不仅仅是个压力测试的过程,而是一个相当系统的工程,我认为压力测试是为了让系统达到所期望的运行效果以及承受所期望的压力,这也就要求压力测试应该帮助性能调优团队,为其提供一定程度的指导,在这里我不将压力测试和性能调优分的那么清楚了,在我看来,压力测试过程包括了:明确压力测试的目标、构建压力测试案例、进行压力测试、分析压力测试结果、寻找瓶颈并进行调优以达到目标,在这篇blog中来细看下这几个过程以及常用的方法。
阅读全文
摘要: 这篇文章的第二部分在昨天也发布出来了,于是抓紧时间把它给翻译了。在这篇文章的第一部分中,作者结合自己的经验对如何构建具备良好的垂直扩展能力的Java EE应用做了讲解,在这第二部分的文章中,作者则对如何构建具备良好水平扩展能力的Java EE应用来进行了详细的讲述,常见的session复制问题,水平扩展中经常需要涉及的分布式文件系统、分布式缓存、分布式并行计算,全文读下来,作者基本指出了构建可扩展的Java EE应用需要了解的知识体系(如需深入的话还有必要进一步的学习,例如集群技术、通讯协议、线程、并发等)和平时实践中的一些注意事项,应该说是篇十分难得的好文章,值得推荐。
阅读全文
摘要: 这是一篇从TheServerSide上翻译过来的文章,很自豪这篇这么好的文章是一个中国人(从作者名字上猜想应该是中国人吧,:))写的,原文地址为:http://www.theserverside.com/tt/articles/article.tss?l=ScalingYourJavaEEApplications,可以说,这篇文章写的是非常的不错的,这是文章的第一部分,探讨了如何构建可垂直扩展的Java EE应用,文中谈论到的让所编写的Java EE应用具备垂直扩展能力的几个关键要素,例如热锁问题、尽可能的缩短同步块、不要在static方法上加锁、多使用Atomic包、jvm内存不能设置的太大等,文中除了列了这几个关键要素外,还详细的解释了为什么不能做以及如何避免出现这样的现象,可以很明显的看出作者在这些方面是具备了非常丰富的经验的,因此这篇文章不仅仅讲述了可扩展性理论方面的知识,同时也很好的从实战角度进行了分析,之后我也会结合这篇文章来说说自己曾经碰到的垂直扩展场景的反例,同时也很期待这篇文章的第二部分,第二部分将探讨如何构建可水平扩展的Java EE应用,翻译的不好的地方还请大家多
阅读全文
摘要: 之前写了个简单的jsp做压力测试,没想到出现的一个问题是当压力比较大的情况,运行比较久的话会出现一个现象,就是jvm的内存几乎被耗尽,用 jprofiler查看会发现是有一个ConcurrentHashMap对象的内存一直在增长,而且没有释放的迹象,随后进入Debug模式,跟踪查找都有谁new了ConcurrentHashMap,因为测试场景中是个非常简单的jsp页面,发现只有jsp的Request session会创建这个ConcurrentHashMap,很久没写jsp了,猜测是request session的默认超时时间太长,所以导致高压力下(200并发,总共连续访问50万次,jvm内存1G)会出现内存一直没有回收的问题,后来打印了一下request session的默认超时(AS是jboss 4.2.2),是半小时,如果这样的话确实是会有造成上面内存一直被占用的现象。
阅读全文