CN105824687B - 一种Java虚拟机性能自动调优的方法及装置 - Google Patents
一种Java虚拟机性能自动调优的方法及装置 Download PDFInfo
- Publication number
- CN105824687B CN105824687B CN201610149198.9A CN201610149198A CN105824687B CN 105824687 B CN105824687 B CN 105824687B CN 201610149198 A CN201610149198 A CN 201610149198A CN 105824687 B CN105824687 B CN 105824687B
- Authority
- CN
- China
- Prior art keywords
- parameter
- virtual machine
- java virtual
- list
- tuning
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种Java虚拟机性能自动调优的方法及装置。该装置包括Java虚拟器、Java应用程序参数配置器、正式参数表、初始参数表、总参数表、GC测量器和任务调度器。本发明的Java虚拟机性能自动调优的方法主要通过自动比较运行调优前后的初始参数值时,垃圾回收时间的平均值TP和TT的大小,确定参数的最优值,从而得到Java应用服务器的最优配置。本发明方法及装置可以有效提升Java应用服务器的性能,以此减少服务器本身的消耗,从而节省了社会资源。
Description
技术领域
本发明涉及一种服务器软件技术,具体涉及一种Java虚拟机性能自动调优的方法及装置。
背景技术
应用服务器是指通过各种协议把业务逻辑暴露给客户端的软件程序,它提供了访问业务逻辑的手段以供客户端应用程序使用。应用服务器使用此业务逻辑就像调用对象中的某个方法那样。Java应用服务器是指基于Java编程语言开发的应用服务器软件。
众所周知,Java应用服务器运行于Java虚拟机之上,由虚拟机负责程序的运行、内存的管理、指令的执行等。在整个Java应用服务器的运行期间,其运行的性能如何,基本上是不受控的。
Java虚拟机中资源最密集的部分就是垃圾收集器GC,它会自动回收未被引用的对象,以便腾出内存空间供进一步的分配。当百万计的对象在同一时刻被回收时,应用程序可能会断断续续的运行,甚至可能会停顿几秒或者几分钟,直到堆内存清理干净。而Java虚拟机提供了五种垃圾收集器,分别用于不同的工作负载情况。这些垃圾收集器共有280个参数,这些参数分别以不同的方式调节垃圾收集器的运行。由于参数太多,实际上没有几个开发者能够弄清楚这些参数的真正用途。而且在大多数情况下,这些参数反映的是虚拟机内部情况,基本上不会向用户反馈任何内容。因此,系统管理员很难找出虚拟机最优的配置。
发明内容
[要解决的技术问题]
本发明的目的是解决上述现有技术问题,提供一种Java虚拟机性能自动调优的方法及装置。
[技术方案]
为了达到上述的技术效果,本发明采取以下技术方案:
一种Java虚拟机性能自动调优的装置,它包括Java虚拟器和Java应用程序,它还包括参数配置器、正式参数表、初始参数表、总参数表、GC测量器和任务调度器;其中,
参数配置器,用于管理正式参数表和初始参数表,并读取总参数表;
正式参数表,用于保存Java虚拟机运行后经测量合格的参数;
初始参数表,用于向Java虚拟机提供运行所需的初始参数;
总参数表,包含了Java虚拟机运行所需的各种配置参数;
GC测量器,用于测量Java虚拟机运行时的垃圾回收时间;
任务调度器,用于Java虚拟机性能调优程序的执行。
根据本发明更进一步的技术方案,所述总参数表是支持扩展的。
一种Java虚拟机性能自动调优的方法,它包括以下步骤:
(1)利用参数配置器进行整体初始化设置,设定总参数表和初始参数表;其中,所述设定总参数表是指为总参数表设定所有参数以及参数值范围;所述设定初始参数表是指从总参数表中获取所有的参数,并写入初始参数表,为初始参数表预设各参数的经验值;
(2)任务调度器驱动Java虚拟机载入初始参数表并运行Java应用程序;开启GC测量器,测量垃圾回收时间,得到TP;
(3)设定临时参数选取表,从总参数表中选择待调优的单个参数或参数的组合;
(4)根据总参数表中参数值范围,对初始参数表中与临时参数选取表相同的参数进行逐步微调;
(5)判断参数的微调是否超出参数值范围;如果是,返回到步骤(3);如果否,则将微调后的参数写入初始参数表中,并继续;
(6)判断是否所有参数和调优参数的组合均已执行;如果是,则转到步骤(9);如果否,则继续;
(7)任务调度器驱动Java虚拟机载入微调后的初始参数表并运行Java应用程序;开启GC测量器,测量垃圾回收时间,得到TT;
(8)比较TP和TT;如果TP>TT时,则将临时参数选取表的参数及其数据写入正式参数表中,并将TT值赋予TP,然后返回步骤(4);如果TP≤TT,则丢弃TT值,并返回步骤(4);
(9)发布正式参数表中的参数配置为最优配置。
根据本发明更进一步的技术方案,所述TP是测量得到多次垃圾回收时间,去掉最大最小值后,取得的平均值;所述TT是测量得到多次垃圾回收时间,去掉最大最小值后,取得的平均值。
根据本发明更进一步的技术方案,所述逐步微调是对参数进行逐步增大或逐步减小。
下面将详细地说明本发明。
目前Java虚拟机的参数共有280个,包括通用存储器的17个参数,并行Old GC的37个参数,并行New GC的41个参数,第一垃圾回收器G1的45个参数,垃圾回收器CMS的103个参数,串行GC的37个参数。每个参数均设定一个参数值的变化范围,在该取值范围内的参数有效,超过范围的无效。随着Java技术的发展,未来还会有更多的参数,故总参数表是支持扩展的。本发明中为初始参数表预设各参数的经验值,该经验值是指根据在Java项目开发和部署上线的长期运行实践中,针对大多数Java应用程序总结得出的Java虚拟机的各参数的值。为了调优的准确性,Java应用程序尽可能选择专门的基准测试使用的Java应用程序。本发明所述的待调优的单个参数和参数的组合,是指根据一定的选取方案,在总参数表中选取一个或多个参数及其取值范围。这里所述的一定的选取方案既包括业界公认的调优参数的组合,又包括长期实践中形成的参数调优组合,以及单个参数的调整。这里所述的参数的组合和单个参数的调整是不重叠的,即有的参数适于单个单数的调整以优化应用程序性能,有的参数是需要以组合的方式,共同调整以优化优化应用程序性能。首先建立一个临时参数选取表,是通过微调初始参数表中相同的参数,以确定临时参数选取表中的参数是否能进一步优化应用程序性能,如果可以,则该临时参数选取表中的参数或参数组合写入正式参数表中,并且该临时参数选取表继续选择参数,该处临时参数选取表仅选择单个参数或参数的组合。对初始参数表进行微调优选从取值范围的最小值开始逐步增大至最大值,测试取值范围内的具有优化应用程序性能的参数值,因此在调优的过程中,存在同一参数不只一个点值具有优化的作用,因此参数最终的取值可以为单个值、多个值或一段数值。
[有益效果]
本发明与现有技术相比,具有以下的有益效果:
本发明的装置是一种自动找到Java虚拟机最优配置的装置,利用本发明的装置可以有效提升Java应用服务器的性能,从而减少服务器本身的消耗,节省社会资源,包括电力、机房、服务器硬件等。
通过对本发明方法的应用,在实际生产服务器中进行测试,性能提升10%~20%。因此对Java应用服务器集群更加有用,可以节省服务器资源。本发明的方法在企业数据中心建设、云计算平台建设方面有极高的价值。
附图说明
图1为本发明Java虚拟机性能自动调优的装置的结构示意图;
图2为本发明Java虚拟机性能自动调优的方法的流程图。
具体实施方式
下面结合本发明的实施例对本发明作进一步的阐述和说明。
实施例:
一种如图1所示的Java虚拟机性能自动调优的装置,它包括Java虚拟器和Java应用程序,它还包括参数配置器、正式参数表、初始参数表、总参数表、GC测量器和任务调度器;其中,
参数配置器,用于管理正式参数表和初始参数表,并读取总参数表;
正式参数表,用于保存Java虚拟机运行后经测量合格的参数;
初始参数表,用于向Java虚拟机提供运行所需的初始参数;
总参数表,包含了Java虚拟机运行所需的各种配置参数;
GC测量器,用于测量Java虚拟机运行时的垃圾回收时间;
任务调度器,用于Java虚拟机性能调优程序的执行。
根据本发明更进一步的技术方案,所述总参数表是支持扩展的。目前Java虚拟机的参数共有280个,包括通用存储器的17个参数,并行Old GC的37个参数,并行New GC的41个参数,第一垃圾回收器G1的45个参数,垃圾回收器CMS的103个参数,串行GC的37个参数。每个参数均设定一个参数值的变化范围,在该取值范围内的参数有效,超过范围的无效。随着Java技术的发展,未来还会有更多的参数,故总参数表是支持扩展的。
一种Java虚拟机性能自动调优的方法,它包括如图2所示的以下步骤:
(1)利用参数配置器进行整体初始化设置,设定总参数表和初始参数表;其中,所述设定总参数表是指为总参数表设定所有参数以及参数值范围;所述设定初始参数表是指从总参数表中获取所有的参数,并写入初始参数表,为初始参数表预设各参数的经验值;
(2)任务调度器驱动Java虚拟机载入初始参数表并运行Java应用程序;开启GC测量器,测量垃圾回收时间,得到TP;
(3)设定临时参数选取表,从总参数表中选择待调优的单个参数或参数的组合;本发明所述的待调优的单个参数和参数的组合,是指根据一定的选取方案,在总参数表中选取一个或多个参数及其取值范围。这里所述的一定的选取方案既包括业界公认的调优参数的组合,又包括长期实践中形成的参数调优组合,以及单个参数的调整。这里所述的参数的组合和单个参数的调整是不重叠的,即有的参数适于单个单数的调整以优化应用程序性能,有的参数是需要以组合的方式,共同调整以优化优化应用程序性能。首先建立一个临时参数选取表,是通过微调初始参数表中相同的参数,以确定临时参数选取表中的参数是否能进一步优化应用程序性能,如果可以,则该临时参数选取表中的参数或参数组合写入正式参数表中,并且该临时参数选取表继续选择参数,该处临时参数选取表仅选择单个参数或参数的组合。
(4)根据总参数表中参数值范围,对初始参数表中与临时参数选取表相同的参数进行逐步微调;对初始参数表进行微调优选从取值范围的最小值开始逐步增大至最大值,测试取值范围内的具有优化应用程序性能的参数值,因此在调优的过程中,存在同一参数不只一个点值具有优化的作用,因此参数最终的取值可以为单个值、多个值或一段数值。
(5)判断参数的微调是否超出参数值范围;如果是,返回到步骤(3);如果否,则将微调后的参数写入初始参数表中,并继续;
(6)判断是否所有参数和调优参数的组合均已执行;如果是,则转到步骤(9);如果否,则继续;
(7)任务调度器驱动Java虚拟机载入微调后的初始参数表并运行Java应用程序;开启GC测量器,测量垃圾回收时间,得到TT;
(8)比较TP和TT;如果TP>TT时,则将临时参数选取表的参数及其数据写入正式参数表中,并将TT值赋予TP,然后返回步骤(4);如果TP≤TT,则丢弃TT值,并返回步骤(4);
(9)发布正式参数表中的参数配置为最优配置。
根据本发明更进一步的技术方案,所述TP是测量得到多次垃圾回收时间,去掉最大最小值后,取得的平均值;所述TT是测量得到多次垃圾回收时间,去掉最大最小值后,取得的平均值。所述逐步微调是对参数进行逐步增大或逐步减小。
利用本实施例的装置和方法在实际生产服务器中进行测试,其性能提升了10~20%。
尽管这里参照本发明的解释性实施例对本发明进行了描述,上述实施例仅为本发明较佳的实施方式,本发明的实施方式并不受上述实施例的限制,应该理解,本领域技术人员可以设计出很多其他的修改和实施方式,这些修改和实施方式将落在本申请公开的原则范围和精神之内。
Claims (4)
1.一种Java虚拟机性能自动调优的装置,它包括Java虚拟机和Java应用程序,其特征在于它还包括参数配置器、正式参数表、初始参数表、总参数表、GC测量器和任务调度器;其中,
参数配置器,用于管理正式参数表和初始参数表,并读取总参数表;
正式参数表,用于保存Java虚拟机运行后经测量合格的参数;
初始参数表,用于向Java虚拟机提供运行所需的初始参数;
总参数表,包含了Java虚拟机运行所需的各种配置参数;
GC测量器,用于测量Java虚拟机运行时的垃圾回收时间;
任务调度器,用于Java虚拟机性能调优程序的执行。
2.根据权利要求1所述的Java虚拟机性能自动调优的装置,其特征在于所述总参数表是支持扩展的。
3.一种Java虚拟机性能自动调优的方法,其特征在于它包括以下步骤:
(1)利用参数配置器进行整体初始化设置,设定总参数表和初始参数表;其中,所述设定总参数表是指为总参数表设定所有参数以及参数值范围;所述设定初始参数表是指从总参数表中获取所有的参数,并写入初始参数表,为初始参数表预设各参数的经验值;
(2)任务调度器驱动Java虚拟机载入初始参数表并运行Java应用程序;开启GC测量器,测量垃圾回收时间,得到TP;所述TP是测量得到多次垃圾回收时间,去掉最大最小值后,取得的平均值;
(3)设定临时参数选取表,从总参数表中选择待调优的单个参数或参数的组合;
(4)根据总参数表中参数值范围,对初始参数表中与临时参数选取表相同的参数进行逐步微调;
(5)判断参数的微调是否超出参数值范围;如果是,返回到步骤(3);如果否,则将微调后的参数写入初始参数表中,并继续;
(6)判断是否所有参数和调优参数的组合均已执行;如果是,则转到步骤(9);如果否,则继续;
(7)任务调度器驱动Java虚拟机载入微调后的初始参数表并运行Java应用程序;开启GC测量器,测量垃圾回收时间,得到TT;所述TT是测量得到多次垃圾回收时间,去掉最大最小值后,取得的平均值;
(8)比较TP和TT;如果TP>TT时,则将临时参数选取表的参数及其数据写入正式参数表中,并将TT值赋予TP,然后返回步骤(4);如果TP≤TT,则丢弃TT值,并返回步骤(4);
(9)发布正式参数表中的参数配置为最优配置。
4.根据权利要求3所述的Java虚拟机性能自动调优的方法,其特征在于所述逐步微调是对参数进行逐步增大或逐步减小。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610149198.9A CN105824687B (zh) | 2016-03-15 | 2016-03-15 | 一种Java虚拟机性能自动调优的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610149198.9A CN105824687B (zh) | 2016-03-15 | 2016-03-15 | 一种Java虚拟机性能自动调优的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105824687A CN105824687A (zh) | 2016-08-03 |
CN105824687B true CN105824687B (zh) | 2019-03-22 |
Family
ID=56987867
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610149198.9A Active CN105824687B (zh) | 2016-03-15 | 2016-03-15 | 一种Java虚拟机性能自动调优的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105824687B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109117242A (zh) * | 2017-06-22 | 2019-01-01 | 龙芯中科技术有限公司 | 虚拟机垃圾回收调优方法、装置、电子设备及存储介质 |
US11340924B2 (en) | 2019-06-27 | 2022-05-24 | International Business Machines Corporation | Machine-learning based heap memory tuning |
CN111352698B (zh) * | 2020-02-25 | 2023-12-22 | 北京奇艺世纪科技有限公司 | 一种jvm参数的调整方法及装置 |
CN111949377B (zh) * | 2020-08-25 | 2021-08-31 | 深圳市广通软件有限公司 | Web中间件的jvm参数优化方法、装置、服务器及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1461991A (zh) * | 2002-05-30 | 2003-12-17 | 惠普公司 | 在计算机程序正在运行时改进它们的性能 |
WO2007061441A2 (en) * | 2005-11-23 | 2007-05-31 | Bea Systems, Inc. | System and method for adaptive garbage collection in a virtual machine environment |
CN102411513A (zh) * | 2011-08-10 | 2012-04-11 | 复旦大学 | 一种工作于混合模式执行引擎中的垃圾收集方法 |
CN103186412A (zh) * | 2011-12-31 | 2013-07-03 | 北京新媒传信科技有限公司 | 基于jvm服务器的性能优化方法 |
-
2016
- 2016-03-15 CN CN201610149198.9A patent/CN105824687B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1461991A (zh) * | 2002-05-30 | 2003-12-17 | 惠普公司 | 在计算机程序正在运行时改进它们的性能 |
WO2007061441A2 (en) * | 2005-11-23 | 2007-05-31 | Bea Systems, Inc. | System and method for adaptive garbage collection in a virtual machine environment |
CN102411513A (zh) * | 2011-08-10 | 2012-04-11 | 复旦大学 | 一种工作于混合模式执行引擎中的垃圾收集方法 |
CN103186412A (zh) * | 2011-12-31 | 2013-07-03 | 北京新媒传信科技有限公司 | 基于jvm服务器的性能优化方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105824687A (zh) | 2016-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105824687B (zh) | 一种Java虚拟机性能自动调优的方法及装置 | |
CN110287029A (zh) | 一种基于kubernetes容器资源动态调整的方法 | |
US20160203404A1 (en) | Predicting execution times of concurrent queries | |
US9058428B1 (en) | Software testing using shadow requests | |
CN104991830A (zh) | 基于服务等级协议的yarn资源分配和节能调度方法及系统 | |
CN103279353B (zh) | 一种应用优化策略确定方法、装置及系统 | |
CN103955491A (zh) | 一种定时数据增量同步的方法 | |
CN107861796B (zh) | 一种支持云数据中心能耗优化的虚拟机调度方法 | |
CN104216783A (zh) | 云游戏中虚拟gpu资源自主管理与控制方法 | |
CN112685153A (zh) | 微服务调度方法、装置以及电子设备 | |
CN106339252B (zh) | 分布式dag系统的自适应优化方法和装置 | |
Cheng et al. | Heterogeneity aware workload management in distributed sustainable datacenters | |
CN103903312A (zh) | 自动巡检的执行方法和装置 | |
CN103294599A (zh) | 一种基于云的嵌入式软件交叉测试方法 | |
CN103442087B (zh) | 一种基于响应时间趋势分析的Web服务系统访问量控制装置和方法 | |
CN103488538A (zh) | 云计算系统中的应用扩展装置和应用扩展方法 | |
CN106407013B (zh) | 资源动态调度的方法、装置、资源调度服务器及系统 | |
Li et al. | Load prediction-based automatic scaling cloud computing | |
CN104111876A (zh) | 一种基于Oracle资源计划的动态资源管理装置及方法 | |
CN103325012A (zh) | 一种适用于电网安全校核的并行计算动态任务分配方法 | |
Ivanov et al. | Improving efficiency of analysis jobs in CMS | |
CN113094406A (zh) | 一种电力营销数据治理方法以及系统 | |
CN109783304B (zh) | 一种数据中心的节能调度方法及对应装置 | |
CN109144693A (zh) | 一种功率自适应任务调度方法及系统 | |
CN114880079A (zh) | 基于强化学习的Kubernetes集群规模调整方法、系统及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |