JVM性能调优解决方案.pdf

JVM性能调优解决方案.pdf

ID:57527782

大小:618.71 KB

页数:12页

时间:2020-08-26

JVM性能调优解决方案.pdf_第1页
JVM性能调优解决方案.pdf_第2页
JVM性能调优解决方案.pdf_第3页
JVM性能调优解决方案.pdf_第4页
JVM性能调优解决方案.pdf_第5页
资源描述:

《JVM性能调优解决方案.pdf》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、精品文档JVM性能调优解决方案(总结)一、引言本文的读者是技术支持人员。阅读本文后,你将理解jboss的启动脚本文件(run.sh)中有一系列的JVM配置参数的含义,以及如何调整它们,从而使得MegaEyes中心管理服务器的性能得到优化。MegaEyes中心管理服务器的性能调优涉及到系统的多个方面,包括MegaEyes应用本身、应用服务器(jboss)、数据库和java虚拟机(JVM)等等。本文重点介绍JVM的性能优化。需要注意的是,JVM性能调优具有应用独特性(applicationspecific

2、),就是说,不同的应用情形应该有不同的调整方案,这就要求你首先要观察JVM的运行状态,然后根据观察结果调整参数。没有一个通用的调优方案可以适用于所有的MegaEyes应用。什么是性能调优对性能调优,不同的人有不同的理解,本文是指对下列指标最大化:并发用户(concurrentusers),在服务请求失败或请求响应超过预期时间之前,系统支持的最大并发用户数量。系统容量(throughput),可以用每秒处理的事务(transaction)数量计算。可靠性(reliability)换句话说,我

3、们想对更多的用户提供更快捷的、不会中断的服务。JVM性能调优的重点JVM的性能调优的重点是垃圾回收(gc,garbagecollection)和内存管理。垃圾回收的时候会导致整个虚拟机暂停服务,因此,应该尽可能地缩短垃圾回收的处理时间。JVM内存JVM占用的内存称为堆(heap),它被分为三个区:年轻(young,又称为new)、老(tenured,又称为old)和永生(perm)。这三个区是按照java对1欢迎下载。精品文档象的生存期划分的,在new区的对象生存期最短,很快就会被gc回收;perm区

4、的对象生存期最长,与JVM同生死。Perm区的对象不会被gc回收。new区又被分为三个部分:伊甸园(eden)和两个幸存者(survivor)。对象的创建总是在eden部分(这大概就是命名该部分为eden的原因吧)。两个survivor中总有一个是空的,它作为另一个survivor的缓冲区。当gc发生时,所有eden和survivor中活下来的对象被移动到另一个survivor中。对象会在两个survivor之间不断移动,直到活得足够久,然后移动到old区。我们可以猜想,之所以如此划分使用内存,肯定是

5、为了缩短gc的执行时间,提高gc的执行效率。垃圾回收算法除了默认的垃圾回收算法外,JVM还提供了两个:并行(parallel)和并发(concurrent),前者作用在new区,后者作用在old区。两者可以同时使用。并行算法会产生多个线程以提高执行效率。当有多个cpu的时候,它会显著缩短gc的工作时间。并发算法可以在JVM不中断对应用的服务的情况下执行(通常情况下,在gc工作的时候JVM停止对应用的服务)。二、性能参数参数含义说明-XmsHeap的最小尺寸-XmxHeap的最大尺寸作为一个通行的准则,

6、设置Xms和Xmx的尺寸一样,以减少gc的次数。要将它们设置足够大,否则就会产生outofmemory错误,但又不能设置过大,过大会增加gc的工作时间。-Xmnnew的尺寸-XX:PermSizePerm的最小尺寸-XX:MaxPermSizePerm的最大尺寸类似heap的设置,应该将perm设置为固定尺寸,即最大和最小尺寸一样。-XX:SurvivorRatioNew区中eden与Survivor区的比值-XX:+UseParallelGC使用parallelgc2欢迎下载。精品文档-XX:Par

7、allelGCThreadsParallelgc的线程个数与cpu个数相同,使得所有cpu都参与gc工作。JVM的参数主要由-X和-XX类型的选项组成,上边列出了一些对内存和gc的性能影响比较大的。三、性能参数调优要调整参数首先要观察它们。观察JVM内存和gc的工具很多,jdk本身也提供了一些,这些工具简单、实用,而且不需要安装。其中,最常用的是jps和jstat,前者用来查看JVM的进程id(pid),后者用这个pid作为参数来得到内存和gc的状态,就是说,在执行jstat之前必须用jps得到JVM

8、的pid。Jstat的例子::jstat-gcutil2130825010其中,21308是(运行jboss)的JVM的pid;250是采样间隔,单位是毫秒,即250毫秒采集一次数据;10是采样次数。上述命令的执行结果如下:S0S1EOPYGCYGCTFGCFGCTGCT0.000.0011.395.2913.573281.955327133.126135.0810.000.0011.395.2913.573281.955327133.126135.08

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

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

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