基于JVM服务器的性能优化方法技术

技术编号:8883042 阅读:155 留言:0更新日期:2013-07-04 01:58
本发明专利技术公开了一种基于JVM服务器的性能优化方法,涉及Java虚拟机技术领域,包括:S1:根据服务器的当前配置对服务器进行压力测试,得到压力测试结果;S2:判断所述压力测试结果是否满足预先设定的阈值,若不满足,则执行步骤S3;若满足,则使用当前配置作为优化配置的结果;S3:调整服务器的当前配置参数,调整后执行步骤S1。本发明专利技术使得线上服务器压力减小,以及部分服务器中资源得到充分利用。

【技术实现步骤摘要】

本专利技术涉及Java虚拟机(Java Virtual Machine, JVM)
,特别涉及一种基于JVM服务器的性能优化方法
技术介绍
Java虚拟机中的对象共划分为三个代:年轻代(Young Generation)、年老代(OldGeneration)和持久代(Permanent Generation)。其中持久代主要存放的是Java类的类信息,与垃圾回收(Garbage Collection, GC)要收集的Java对象关系不大。年轻代和年老代的划分是对垃圾回收影响比较大的。年轻代:所有新生成的对象首先都是放在年轻代的。年轻代的目标就是尽可能快速的收集掉那些生命周期短的对象。年轻代分三个区。一个Eden区,两个Survivor区(一般而言)。大部分对象在Eden区中生成。当Eden区满时,还存活的对象将被复制到Survivor区(两个中的一个),当这个Survivor区满时,此区的存活对象将被复制到另外一个Survivor区,当这个Survivor区也满了的时候,从第一个Survivor区复制过来的并且此时还存活的对象,将被复制到“年老区(Tenured)”。需要注意,Survivor的两个区是对称的,没先后关系,所以同一个区中可能同时存在从Eden复制过来的对象,和从前一个Survivor复制过来的对象,而复制到年老区的只有从第一个Survivor区过来的对象。而且,Survivor区总有一个是空的(因为Survior区分两个区,在复制的时候从sO到si复制完以后sO区里面的对象将被释放,等待下一次YGC时再进行交换,从Si到sO所以每次总有一个s区是空的)。同时,根据程序需要,Survivor区是可以配置为多个的(多于两个),这样可以增加对象在年轻代中的存在时间,减少被放到年老代的可能。年轻代的回收称为YGC。年老代:在年轻代中经历了 N次垃圾回收后仍然存活的对象,就会被放到年老代中。因此,可以认为年老代中存放的都是一些生命周期较长的对象。年老代的回收称为Full GC。持久代:用于存放静态文件,如今Java类、方法等。持久代对垃圾回收没有显著影响,但是有些应用可能动态生成或者调用一些class,例如:Hibernate等,在这种时候需要设置一个比较大的持久代空间来存放这些运行过程中新增的类。针对线上服务器的系统以及所有应用服务,在部署后没有进行过系统优化,在随着应用服务的增减,用户数量的增减,会造成线上部分服务器压力过大,以及部分服务器利用不充分,尤其是在垃圾回收方面,和内存利用效率息息相关,因此需要优化服务器的配置。
技术实现思路
(一)要解决的技术问题本专利技术要解决的技术问题是:线上部分服务器压力过大,以及部分服务器利用不充分的问题。(二)技术方案为解决上述技术问题,本专利技术提供了一种基于JVM服务器的性能优化方法,包括:S1:根据服务器的当前配置对服务器进行压力测试,得到压力测试结果;S2:判断所述压力测试结果是否满足预先设定的阈值,若不满足,则执行步骤S3 ;若满足,则使用当前配置作为优化配置的结果;S3:调整服务器的当前配置参数,调整后执行步骤SI。其中,所述压力测试为在一段时间内实时监测配置参数的参数值,所述配置参数包括:垃圾回收参数。其中,所述步骤S3中包括:设置内存大小、垃圾回收线程数及线程堆栈大小。其中,所述设置的垃圾回收线程数为CPU核的个数。其中,所述步骤S3中包括:设置JVM中的年轻代对象的Survivor区与Eden区比例。其中,所述步骤S3中包括:设置参数η,η为JVM中转移到年老代的对象在年轻代中经过垃圾回收的次数。其中,所述步骤S3中包括:设置JVM中年老代区的垃圾回收的次数。其中,所述步骤S3中包括:设置JVM中持久代区的存储空间大小。其中,在压力测试的过程中还包括并发执行内存碎片整理的过程。其中,所述步骤S3中包括:设置在进行m次年老代区的垃圾回收后进行所述内存碎片整理。(三)有益效果本专利技术的基于JVM服务器的性能优化方法通过对服务器的性能反复测试优化,使得线上服务器压力减小,以及部分服务器中资源得到充分利用。附图说明图1是本专利技术实施例的一种基于JVM服务器的性能优化方法流程图;图2是对JVM服务器的性能优化前的压力测试结果图;图3是对JVM服务器的性能优化前每秒点击次数随时间变化曲线图;图4是对JVM服务器的性能优化后的压力测试结果图;图5是对JVM服务器的性能优化后内存为4G时每秒点击次数随时间变化曲线图;图6是对JVM服务器的性能优化后内存为5G时每秒点击次数随时间变化曲线图;图7是对JVM服务器的性能优化后内存为8G时每秒点击次数随时间变化曲线图。具体实施例方式下面结合附图和实施例,对本专利技术的具体实施方式作进一步详细描述。以下实施例用于说明本专利技术,但不用来限制本专利技术的范围。如图1所示,本专利技术的基于JVM服务器的性能优化方法包括:步骤S101,根据服务器的当前配置对服务器进行压力测试,得到压力测试结果。步骤S102,判断压力测试结果是否满足预先设定的阈值,若不满足,则执行步骤S103 ;若满足,执行步骤S104。其中,阈值根据实际线上服务器的运行情况及用户数量不同而不同。阈值的设定根据服务器能承受性能压力的情况下,资源利用率达到最高,不浪费。步骤S103,调整服务器的当前配置参数,调整后执行步骤S101。步骤S104,使用当前配置作为优化配置的结果。本专利技术主要思想是根据压力测试结果优化JVM GC回收的相关参数,然后通过优化后的压力测试结果与线上配置进行比对,来检查是否通过优化而对项目本身的GC回收情况、网络吞吐情况、单位时间(秒)点击率、以及系统实时压力情况(CPU、内存、磁盘)有所提升,本专利技术主要将单位时间(秒)点击率作为压力测试主要指标,以下通过测试项目来具体说明本专利技术的方法,其中,机器硬件信息:CPU:1ntel (R) Xeon (R) CPU E5620i2.40GHz 4 核,8 通道,内存:24G。软件信息:系统:CentOS 5.664位内核版本:2.6.18-238.12.1.el5Tomcat:Apache Tomcat/6.0.29Jdk: java version “ 1.6.0_16” 64 位压力测试软件:Loadrunner上述步骤中主要测试以下参数,参数值是线上JVM初始化配置:JAVA_0PTS = " $JAVA_0PTS-server-Xms6144M-Xmx6144M-Xmn4096M-XX:PermSize=6OOM-XX:MaxPermSize = 300M-XX:SurvivorRatio = 65536-XX:MaxTenuringThreshold=O-Xnoclassgc-XX:+DisableExplicitGC-XX:+UseParNewGC-XX:+UseConcMarkSweepGC-XX:+UseCMSCompactAtFuI IColIection-XX:CMSFulIGCsBeforeCompaction =1-XX:+CMSClassUnloadingEnabled -XX:-CMSParaIIelRemarkEnabIe d-XX: CMSInitiatingOc本文档来自技高网
...

【技术保护点】
一种基于JVM服务器的性能优化方法,其特征在于,包括:S1:根据服务器的当前配置对服务器进行压力测试,得到压力测试结果;S2:判断所述压力测试结果是否满足预先设定的阈值,若不满足,则执行步骤S3;若满足,则使用当前配置作为优化配置的结果;S3:调整服务器的当前配置参数,调整后执行步骤S1。

【技术特征摘要】

【专利技术属性】
技术研发人员:高赫
申请(专利权)人:北京新媒传信科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1