没有合适的资源?快使用搜索试试~ 我知道了~
首页针对java的性能测试与调优案例.pdf
资源详情
资源评论
资源推荐
PrefTest 性能测试工作室 - http://cnblogs.com/preftest
目 录
JDK 优化 .........................................................................................................................................2
如何修改默认Java调用的JVM.dll版本?.................................................................................2
测试实例...................................................................................................................................3
选择合适的 JDK 版本 .............................................................................................................3
垃圾收集 Java 堆的优化..........................................................................................................4
Tomcat 性能监控与优化.................................................................................................................5
监控...........................................................................................................................................5
Tomcat 监控页面..............................................................................................................5
JMX...................................................................................................................................5
内存使用调整(Out of Memery 问题) .................................................................................9
连接线程数调整(cannot connect to server 问题)...............................................................9
connectionTimeout..................................................................................................................11
是否是整个连接处理的时间?.....................................................................................11
用 telnet 收工测试..........................................................................................................12
直接写 Socket 做测试....................................................................................................12
acceptCount – 最大排队数....................................................................................................13
Tomcat Native library .............................................................................................................15
Connector................................................................................................................................17
oracle 性能监控、诊断分析与调优 .............................................................................................20
监控方法.................................................................................................................................20
方法 1:在 LR 的 Controller 中配置监视 Oracle.........................................................20
方法 2:使用 SiteScope.................................................................................................25
方法 3:使用 Oracle 企业管理器查看数据库性能 .....................................................26
方法 4:使用 Spotlight..................................................................................................27
计数器.....................................................................................................................................27
sorts(disk)(V$SYSSTAT)................................................................................................27
sort(memory)(V$SYSSTAT)...........................................................................................28
db block gets (V$SYSSTAT) ..........................................................................................29
parse count (hard)(V$SYSSTAT)....................................................................................31
CPU used by this session(V$SYSSTAT) ........................................................................35
跟踪诊断和优化 SQL 语句 ...................................................................................................36
Oracle 索引问题诊断与优化 .................................................................................................41
p6spy 监控和跟踪 SQL 语句........................................................................................................43
JSP、Servlet 性能优化.................................................................................................................44
Servlet 常见性能问题分析与优化 ........................................................................................45
Servlet 中利用 init()方法进行高速缓存........................................................................45
Servlet 压缩输出 ............................................................................................................47
JSP 常见性能问题分析与优化..............................................................................................49
选择正确的页面包含机制.............................................................................................49
屏蔽 Page Session...........................................................................................................49
正确地确定 javabean 的生命周期.................................................................................51
控制 Session 的时间 ......................................................................................................52
PrefTest 性能测试工作室 - http://cnblogs.com/preftest
1
PrefTest 性能测试工作室 - http://cnblogs.com/preftest
Java 代码性能监控与性能问题定位............................................................................................53
内存泄漏检测.........................................................................................................................53
JVM 内存泄漏分析................................................................................................................61
认识 JVM........................................................................................................................61
JVM 启动参数介绍........................................................................................................63
JVM 性能瓶颈................................................................................................................64
JVM 内存泄漏实例一 - PermGen 溢出 .......................................................................64
JVM 内存泄漏实例二 - Heap 溢出..............................................................................65
JVM 内存泄漏实例三 - 垃圾回收时 promotion failed...............................................65
实例-JProfile 跟踪内存泄漏..................................................................................................67
log4j 性能诊断与优化 ...........................................................................................................75
代码效率性能测试与优化.....................................................................................................79
线程死锁.........................................................................................................................79
线程竞争.........................................................................................................................81
算法效率.........................................................................................................................82
JDK 优化
Jvm 动态库有 client 和 server 两个版本,分别针对桌面应用和服务器应用做了相应的优化,
client 版本加 载速度较快,server 版本加载速度较慢但运行起来较快。
%JAVA_HOME%/jre/bin/client/jvm.dll
%JAVA_HOME%/jre/bin/server/jvm.dll
可以看到这两个 jvm.dll 的大小不同。
如何修改默认 Java 调用的 JVM.dll 版本?
在命令行 java -version 可以看到 jvm 配置的是哪个版本。
更改默认 java.exe 调用的 jvm.dll, 这个由 jvm.cfg 决定。编辑
%JAVA_HOME%jre/lib/i386/jvm.cfg
里面第一行写的是 -client 默认就是 client 版本 ,把第二行的-server KNOWN 放到第一行,
如下面所示:
-server KNOWN
-client KNOWN
-hotspot ALIASED_TO -client
-classic WARN
-native ERROR
-green ERROR
PrefTest 性能测试工作室 - http://cnblogs.com/preftest
2
PrefTest 性能测试工作室 - http://cnblogs.com/preftest
测试实例
测试环境:
Tomcat5.5.28
jdk1.6.0_13
测试应用程序:
jpetstore5
测试目的:
对比 jdk 中采用 client 和 server 版本的 jvm 的性能区别
测试场景:
访问主页面
登录
查看宠物
添加宠物到购物车
结账
退出
100 个并发用户运行 1 分钟左右
测试结果:
Client 版本的 JVM 比 Server 版本的在大部分事务的平均响应时间上反而略为快点。
在《J2EE 性能测试》这本书中也得到类似的结果:
JDK 1.3 HotSpot Server 2267ms
JDK 1.3 HotSpot Client 926ms
JDK 1.3 Classic 537ms
JDK 1.22 186ms
IBM 1.3 138ms
JRockit 3.1 137ms
选择合适的 JDK 版本
不同版本的 JDK,甚至不同厂家的 JDK 可能都存在着很大的差异,对于性能优化的程
度不同。一般来说,尽可能选择最新发布的稳定的 JDK 版本。最新的稳定的 JDK 版本相对
以前的 JDK 版本都会做一些 bug 的修改和性能的优化工作。
可以选择自己的需要选择不同的操作系统和对应的 JDK 的版本(只要是符合 Sun 发布
的 Java 规范的),但推荐使用 Sun 公司发布的 JDK。确保所使用的版本是最新的,因为 Sun
PrefTest 性能测试工作室 - http://cnblogs.com/preftest
3
PrefTest 性能测试工作室 - http://cnblogs.com/preftest
公司和其它一些公司一直在为提高性能而对 java 虚拟机做一些升级改进。一些报告显示
JDK1.4 在性能上比 JDK1.3 提高了将近 10%到 20%。
垃圾收集 Java 堆的优化
垃圾收集就是自动释放不再被程序所使用的对象的过程。当一个对象不再被程序所引用
时,它所引用的堆空间可以被回收,以便被后续的新对象所使用。垃圾收集器必须能够断定
哪些对象是不再被引用的,并且能够把它们所占据的堆空间释放出来。如果对象不再被使用,
但还有被程序所引用,这时是不能被垃圾收集器所回收的,此时就是所谓的“内存泄漏”。
监控应用程序是否发生了内存泄漏,有一个非常优秀的监控工具推荐给大家——Quest 公司
的 JProbe 工具,使用它来观察程序运行期的内存变化,并可产生内存快照,从而分析并定
位内存泄漏的确切位置,可以精确定位到源码内。这个工具的使用我在后续的章节中还会做
具体介绍。
Java 堆是指在程序运行时分配给对象生存的空间。通过-mx/-Xmx 和-ms/-Xms 来设置起
始堆的大小和最大堆的大小。根据自己 JDK 的版本和厂家决定使用-mx 和-ms 或-Xmx 和
-Xms。Java 堆大小决定了垃圾回收的频度和速度,Java 堆越大,垃圾回收的频度越低,速
度越慢。同理,Java 堆越小,垃圾回收的频度越高,速度越快。要想设置比较理想的参数,
还是需要了解一些基础知识的。 Java 堆的最大值不能太大,这样会造成系统内存被频繁的
交换和分页。所以最大内存必须低于物理内存减去其他应用程序和进程需要的内存。而且堆
设置的太大,造成垃圾回收的时间过长,这样将得不偿失,极大的影响程序的性能。以下是
一些经常使用的参数设置:
1) 设置-Xms 等于-XmX 的值;
2) 估计内存中存活对象所占的空间的大小,设置-Xms 等于此值,-Xmx 四倍于此值;
3) 设置-Xms 等于-Xmx 的 1/2 大小;
4) 设置-Xms 介于-Xmx 的 1/10 到 1/4 之间;
5) 使用默认的设置。
需要根据自己的运行程序的具体使用场景,来确定最适合自己的参数设置。 除了-Xms
和-Xmx 两个最重要的参数外,还有很多可能会用到的参数,这些参数通常强烈的依赖于垃
圾收集的算法,所以可能因为 JDK 的版本和厂家而有所不同。但这些参数一般在 Web 开发
中用的比较少,就不做详细介绍了。在实际的应用中注意设置-Xms 和-Xmx 使其尽可能的
优化应用程序就行了。对于性能要求很高的程序,就需要自己再多研究研究 Java 虚拟机和
垃圾收集算法的机制了。可以看看曹晓钢翻译的《深入 Java 虚拟机》一书。
PrefTest 性能测试工作室 - http://cnblogs.com/preftest
4
PrefTest 性能测试工作室 - http://cnblogs.com/preftest
Tomcat 性能监控与优化
监控
D:\PrefTest\案例\Tomcat 调优\Tomcat 性能监控.pdf
Tomcat 监控页面
JMX
JMX(JavaManagementExtensions)是一个为应用程序植入管理功能的框架。JMX是一套标准的
代理和服务,实际上,用户可以在任何Java应用程序中使用这些代理和服务实现管理。可以
利用JDK的JConsole来访问TomcatJMX接口实施监控,具体步骤如下:
首先,打开tomcat5的bin目录中的catalina.bat文件,在头部注释部分的后面加上:
set JAVA_OPTS=%JAVA_OPTS%‐Dcom.sun.management.jmxremote.port=8999
‐Dcom.sun.management.jmxremote.authenticate=false
‐Dcom.sun.management.jmxremote.ssl=false
如果已经配置好,则可使用 JConsole 打开监控平台查看 Tomcat 性能。
Linux 下配置 catalina.sh 的例子:
JAVA_OPTS='-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=8999
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Djava.rmi.server.hostname=192.168.0.106'
由于 JMX 提供的接口是任何 Java 程序都可以调用访问的,因此我们可以编写 JAVA 程序来收
集 To m cat 性能数据,具体代码如下所示:
import java.lang.management.MemoryUsage;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Formatter;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import javax.management.MBeanAttributeInfo;
PrefTest 性能测试工作室 - http://cnblogs.com/preftest
5
剩余84页未读,继续阅读
laodizhu
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- zigbee-cluster-library-specification
- JSBSim Reference Manual
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论1