Java EE性能的测试与调优

Java EE性能的测试与调优

ID:45920213

大小:86.92 KB

页数:5页

时间:2019-11-19

Java EE性能的测试与调优_第1页
Java EE性能的测试与调优_第2页
Java EE性能的测试与调优_第3页
Java EE性能的测试与调优_第4页
Java EE性能的测试与调优_第5页
资源描述:

《Java EE性能的测试与调优》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、JavaEE性能的测试与调优    JavaEE是由SunMicrosystems公司于1995年5月推出的Java程序设计语言和Java平台的总称下面yjbys小编为大家准备了关于JavaEE性能的测试与调优欢迎阅读    性能测试的目标    性能测试不同于功能测试不是对与错的检验而是快与慢的衡量在进行真正的性能测试之前要先搞清楚目标:    1.在确定的硬件条件下可以支持的并发数越大越好响应时间越快越好具体需要达到的并发数是多大要求的响应时间是多快由产品经理来提出    2.在确定的硬件条件下测试得到最大并发数和相应的响应时间之后如果增加硬件投入可以

2、得到怎样的性能提升回报?(系统扩展性和伸缩性测试Scalability)    这里的硬件条件包括:cpumemeryI/Onetworkbandwidth    性能测试中的基准测试Benchmarking    与功能测试相似性能测试也要设计测试用例不同的是在正式开始你的业务测试用例之前你要先进行一下基准测试为什么呢?其实就是先要量一下你的硬件的能力不然如果你的测试结果不好你知道是硬件慢还是你的软件的问题这些硬件测试包括:    1.网络带宽测试你可以通过copy大文件的方式测试你的网络的最大带宽是多少    2.cpu你可以利用比较复杂的算法来衡量c

3、pu的快慢    3.memery这个不用测试你知道memery的大小    4.IO也可以通过copy大文件来测试    这些基准测试用例在后面的调优过程中还可以用来衡量你修改之后真的变好了    设计你的业务测试用例    比较理想的测试用例就是要尽可能模仿世界的情况这往往做不到尤其是对于新产品来说你可以先录制一些用户最常用最典型的case作为起点    另外对于并发的概念需要搞清楚并发用户通常是指同时在线的用户这些用户可以能在用你的系统的不同的功能注意并不是说大家都在做同一件事情对某一个事务并发请求是指某一个request的并发调用    对于后一种

4、并发你往往需要计算在用户量最大的时候大概大家都集中的在干一件事情这个请求一定要够快才好    设计好这两种测试用例以后在后面的调优过程中他们就成了衡量你的改进的成效的衡量的标尺    性能调优    性能调优要从底层开始基本上要从OS开始到JVMCacheBufferPoolSQLDBSchema算法    一次不要改的太多改一点测一下这可是个慢功夫需要有耐心    在执行测试的时候还要注意要遵循相同的过程系统需要在重启之后先热身再开始真正的测试不然你会发现你的测试结果很不一样琢磨不定    还有要注意你的客户端的能力比如JMeter很需要内存别因为客户端

5、不行误以为是你的系统的问题那就太乌龙了    在测试调优的时候需要借助一些监控工具比如JConsole来监控系统的状况找到系统的瓶颈所谓瓶颈就是最慢的那个部分也常表现为100%被占满比如你的内存或者cpu被用尽了如果cpu和内存还没有用尽说明他们在等某个资源这时候需要用profile工具去寻找比如JProfileYourKit    利用性能监控日志    因为性能的问题不是很容易重现当product环境中遇到性能问题的时候如果是数据的问题也许当你把product数据copy到你的测试环境中就能重现比较慢点查询加以改进但是如果是并发用户或者网络等运行时环境

6、的问题你就很难重现这时如果你能通过日志看到那些关键的响应慢的方法也许可以帮助你快点找到问题所在下面的代码可以帮你做到这一点仅供参考:    importorg.slf4j.Logger;    publicclassTraceUtil{    finalLoggerlogger;    finallongthreshold=1000;    privatelongbegin;    privatelongofftime=0;    privateStringthreadInfo;    privateStringtargetId;    publicTra

7、ceUtil(Loggerlogger,Threadthread,StringtargetId,longbegin){    this.logger=logger;    this.threadInfo=thread.getId()++thread.toString();    this.targetId=targetId;    this.begin=begin;    }    publicvoidtrace(StringtargetEvent){    longduration=System.currentTimeMillis()begin;    

8、longincrement=durationofftime;   

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。