CN115469972A - 一种jvm参数的调整方法及装置、存储介质及电子设备 - Google Patents
一种jvm参数的调整方法及装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN115469972A CN115469972A CN202211199661.2A CN202211199661A CN115469972A CN 115469972 A CN115469972 A CN 115469972A CN 202211199661 A CN202211199661 A CN 202211199661A CN 115469972 A CN115469972 A CN 115469972A
- Authority
- CN
- China
- Prior art keywords
- memory
- time
- maximum
- preset
- adjusting
- 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.)
- Pending
Links
Images
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/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/45583—Memory management, e.g. access or allocation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种JVM参数的调整方法及装置、存储介质及电子设备,该方法包括:采集系统在预设时间段内的运行状态数据;基于运行状态数据,判断系统是否满足预设的性能条件;当系统不满足性能条件时,判断系统的第一垃圾回收耗时是否超时;若确定系统的第一垃圾回收耗时超时,则对系统的新生代的内存参数进行调整;若确定系统的第一垃圾回收耗时未超时,则判断系统的第二垃圾回收耗时是否超时,并在确定系统的第二垃圾回收耗时超时时,对系统的堆的最大内存参数进行调整。本发明基于系统的运行状态数据,对内存参数进行调整,整个过程无需人工参与,减少人力的投入,提高调整JVM参数的效率。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种JVM参数的调整方法及装置、存储介质及电子设备。
背景技术
当前基于x86平台的Java应用,Java虚拟机(Java Virtual Machine,JVM)参数的设置一般要综合考虑主机内存总大小,系统响应时间等因素来设置相关参数。由于涉及相关机器比较多,实际部署过程中都采用相关固定参数设置,没有实际结合系统具体要求进行个性化设置,无法发挥主机最大效能,导致主机资源浪费。常见的系统现象有:主机总体内存使用率较低,但是JVM的最大堆设置较小导致应用频繁整体垃圾回收(Full GarbageCollection,FullGC);进行查询的时候,系统发生内存耗尽错误(Out of Memory,OOM)异常,导致系统无法正常提供服务。
目前设置JVM参数的方法一般为:系统上线运行一段时间后,人工分析垃圾回收(Garbage Collection,GC)日志后手动调试相关参数。但是当系统主机逐渐增多时,进行相关的配置分析工作量将会大幅度提高,占用大量的人力。
发明内容
有鉴于此,本发明提供一种单点登录方法及装置、存储介质及电子设备,本发明应用系统的运行状态数据,对系统的内存参数进行调整,整个过程无需人工参与,有效的减少人力的投入。
为实现上述目的,本发明实施例提供如下技术方案:
一种JVM参数的调整方法,包括:
采集系统在预设时间段内的运行状态数据;
基于所述运行状态数据,判断所述系统是否满足预设的性能条件;
当所述系统不满足所述性能条件时,判断所述系统的第一垃圾回收耗时是否超时;
若确定所述系统的第一垃圾回收耗时超时,则对所述系统的新生代的内存参数进行调整;
若确定所述系统的第一垃圾回收耗时未超时,则判断所述系统的第二垃圾回收耗时是否超时,并在确定系统的第二垃圾回收耗时超时时,对所述系统的堆的最大内存参数进行调整。
上述的方法,可选的,还包括:
当所述系统满足所述性能条件时,确定所述系统的剩余内存;
当所述剩余内存大于预设剩余内存时,对所述系统的堆的最大内存参数进行调整。
上述的方法,可选的,所述基于所述运行状态数据,判断所述系统是否满足预设的性能条件,包括:
获取所述运行状态数据中的内存使用数据以及响应时间数据;
对所述内存使用数据进行处理,获得内存平均使用率和最大内存使用率;
对所述响应时间数据进行处理,获得最大响应时间和历史平均处理时间;
基于所述内存平均使用率、所述最大内存使用率、所述最大响应时间以及所述历史平均处理时间,判断所述系统是否满足预设的性能条件。
上述的方法,可选的,所述对所述内存使用数据进行处理,获得内存平均使用率和最大内存使用率,包括:
对所述内存使用数据进行处理,获取多条内存使用记录;
确定每条所述内存使用记录中的内存使用率;
将数值最大的内存使用率作为最大内存使用率;
将各个所述内存使用率进行求均值运算,得到内存平均使用率。
上述的方法,可选的,所述对所述响应时间数据进行处理,获得最大响应时间和历史平均处理时间,包括:
对所述响应时间数据进行处理,获取多条历史响应记录;
确定每条所述响应记录中的历史响应时间;
将数值最大的历史响应时间作为最大响应时间;
对各个所述历史响应时间进行求均值运算,得到历史平均处理时间。
上述的方法,可选的,所述基于所述内存平均使用率、所述最大内存使用率、所述最大响应时间以及所述历史平均处理时间,判断所述系统是否满足预设的性能条件,包括:
将所述内存平均使用率与预设的第一使用率进行对比;
将所述最大内存使用率与预设的第二使用率进行对比;
将所述最大响应时间与预设的第一时间进行对比;
将所述历史平均处理时间与预设的第二时间进行对比;
当所述内存平均使用率小于或等于所述第一使用率、所述最大内存使用率小于或等于所述第二使用率、所述最大响应时间小于或等于所述第一时间且所述历史平均处理时间小于或等于所述第二时间时,确定所述系统满足所述性能条件。
一种JVM参数的调整装置,包括:
采集单元,用于采集系统在预设时间段内的运行状态数据;
第一判断单元,用于基于所述运行状态数据,判断所述系统是否满足预设的性能条件;
第二判断单元,用于当所述系统不满足所述性能条件时,判断所述系统的第一垃圾回收耗时是否超时;
第一调整单元,用于若确定所述系统的第一垃圾回收耗时超时,则对所述系统的新生代的内存参数进行调整;
第二调整单元,用于若确定所述系统的第一垃圾回收耗时未超时,则判断所述系统的第二垃圾回收耗时是否超时,并在确定系统的第二垃圾回收耗时超时时,对所述系统的堆的最大内存参数进行调整。
上述的装置,可选的,还包括:
确定单元,用于当所述系统满足所述性能条件时,确定所述系统的剩余内存;当所述剩余内存大于预设剩余内存时,对所述系统的堆的最大内存参数进行调整。
上述的装置,可选的,所述第一判断单元,包括:
第一获取子单元,用于获取所述运行状态数据中的内存使用数据以及响应时间数据;
第二获取子单元,用于对所述内存使用数据进行处理,获得内存平均使用率和最大内存使用率;
第三获取子单元,用于对所述响应时间数据进行处理,获得最大响应时间和历史平均处理时间;
判断子单元,用于基于所述内存平均使用率、所述最大内存使用率、所述最大响应时间以及所述历史平均处理时间,判断所述系统是否满足预设的性能条件。
上述的装置,可选的,所述第二获取子单元,包括:
第一获取模块,用于对所述内存使用数据进行处理,获取多条内存使用记录;
第一确定模块,用于确定每条所述内存使用记录中的内存使用率;
第二确定模块,用于将数值最大的内存使用率确定为最大内存使用率;
第一运算模块,用于将各个所述内存使用率进行求均值运算,得到内存平均使用率。
上述的装置,可选的,所述第三获取子单元,包括:
第二获取模块,用于对所述响应时间数据进行处理,获取多条历史响应记录;
第三确定模块,用于确定每条所述响应记录中的历史响应时间;
第四确定模块,用于将数值最大的历史响应时间确定为最大响应时间;
第二运算模块,用于对各个所述历史响应时间进行求均值运算,得到历史平均处理时间。
上述的装置,可选的,所述判断子单元,包括:
第一对比模块,用于将所述内存平均使用率与预设的第一使用率进行对比;
第二对比模块,用于将所述最大内存使用率与预设的第二使用率进行对比;
第三对比模块,用于将所述最大响应时间与预设的第一时间进行对比;
第四对比模块,用于将所述历史平均处理时间与预设的第二时间进行对比;
第五确定模块,用于当所述内存平均使用率小于或等于所述第一使用率、所述最大内存使用率小于或等于所述第二使用率、所述最大响应时间小于或等于所述第一时间且所述历史平均处理时间小于或等于所述第二时间时,确定所述系统满足所述性能条件。
一种存储介质,所述存储介质包括存储的指令,其中,在所述执行运行时控制所述存储介质所在的设备执行如上所述的JVM参数的调整方法。
一种电子设备,包括存储器,以及一个或者一个以上的指令,其中一个或者一个以上指令存储于存储器中,且经配置以由一个或者一个以上处理器执行如上所述的JVM参数的调整方法。
与现有技术相比,本发明具有以下优点:
本发明提供一种JVM参数的调整方法及装置、存储介质及电子设备,该方法包括:采集系统在预设时间段内的运行状态数据;基于运行状态数据,判断系统是否满足预设的性能条件;当系统不满足性能条件时,判断系统的第一垃圾回收耗时是否超时;若确定系统的第一垃圾回收耗时超时,则对系统的新生代的内存参数进行调整;若确定系统的第一垃圾回收耗时未超时,则判断系统的第二垃圾回收耗时是否超时,并在确定系统的第二垃圾回收耗时超时时,对系统的堆的最大内存参数进行调整。本发明基于系统的运行状态数据,对内存参数进行调整,整个过程无需人工参与,减少人力的投入,提高调整JVM参数的效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的一种JVM参数的调整方法的方法流程图;
图2为本发明实施例提供的基于运行状态数据,判断系统是否满足预设的性能条件的方法流程图;
图3为本发明实施例提供的获得内存平均使用率和最大内存使用率的方法流程图;
图4为本发明实施例提供的获得最大响应时间和历史平均处理时间的方法流程图;
图5为本发明实施例提供的基于内存平均使用率、最大内存使用率、最大响应时间以及历史平均处理时间,判断系统是否满足预设的性能条件方法流程图;
图6为本发明实施例提供的JVM参数的调整方法的场景示例图;
图7为本发明实施例提供的一种JVM参数的调整装置的结构示意图;
图8为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本申请中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
基于Java开发的应用,一般不需要专门编写内存回收和垃圾清理的代码,因为Java虚拟机存在自动内存管理和垃圾清扫机制。但是在实际运维过程中,系统管理员都经常会遇到如下困惑:
a)堆内存设置多大空间才能既满足其他应用对内存的需求,又最大程度减少该应用内存耗尽错误(OutOfMemoryError,OOM)的异常次数以及整体垃圾回收(FullGarbageCollection,FullGC)的异常次数。
b)堆内存中新生代和老年代应该设置为多大,才能满足系统吞吐量和响应时间的要求。
堆内存设置过小,应用容易出现OOM错误,导致应用暂停。设置过大一方面容易导致在主机上运行的其他应用内存不足,另一方面,由于内存回收期间应用会暂停,设置过大会导致整理内存回收耗时会增加,应用响应时间会变长,有超时风险。
本发明基于应用历史监控数据,自动调整JVM参数来优化应用性能的方法,在满足系统响应时间要求的前提下,增加系统吞吐量减少系统OOM次数。
对JVM堆内存结构进行说明:JVM内存结构主要有三大块:堆内存、方法区和栈。堆内存是JVM中最大的一块由年轻代和年老代组成,进一步的,此处的年轻代还可以称为新生代,此处的年老代还可以称为老年代。所有新生成的对象首先放到年轻代。年轻代的目标就是尽可能快速的收集掉那些生命周期短的对象。年轻代一般分为3个区:1个Eden(伊甸园)区,2个Survicor(幸存者)区。大部分对象在eden区中生成。当eden区满时,还存活的对象将被赋值到幸存者区(两个中的一个),当一个幸存者区满时,此区的存活的对象将被复制到另外一个幸存者区,当另外一个幸存者区也满时,从前一个幸存者区复制过来的并且还存活的对象,将可能被复制到年老代。针对年轻代的垃圾回收可称为:Young GC;在年轻代中经历了若干次垃圾回收后仍然存活的对象,就会被复制到年老代中。因此,可以认为年老代中存放的都是一些生命周期比较长的对象。针对年老代的垃圾回收可称为:Full GC。
JVM会试图为相关Java对象在年轻代的Eden区中初始化一块内存区域。当Eden区空间足够时,内存申请结束。否者JVM试图释放Eden区中所有不活跃的对象(young GC)。释放后若Eden空间仍然不足以放入新的对象,JVM则试图将部分Eden区中活跃的对象放入幸存者区。幸存者区被用来作为Eden区及年老代的中间交换区域,当年老代空间足够时,幸存者区中存活了一定次数的对象会被复制到年老代中。当年老代空间不够时,JVM会在年老代进行完全的垃圾回收(Full GC)。Full GC后,若幸存者区及年老代仍然无法存放从Eden区复制过来的对象,则会导致JVM无法在Eden区为新生成的对象申请内存,即会出现:Out ofMemory报错。
本发明可用于众多通用或专用的计算装置环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器装置、包括以上任何装置或设备的分布式计算环境等等,本发明可以应用在测试系统中。
参照图1,为本发明实施例提供的一种JVM参数的调整方法的方法流程图,具体说明如下所述。
S101、采集系统在预设时间段内的运行状态数据。
本发明实施例提供的方法中,预设时间段可以根据实际需求进行设置,例如一周,一个月或是一天。
优选的,获取的运行状态数据可以为系统在进行初始化后运行得到的数据,还可以是在对系统的JVM参数进行初始化或是调整后,系统运行一段时间后的数据。
运行状态数据中包括但不限于系统在运行过程中的内存使用数据、响应数据、GC日志以及应用日志等内容。
S102、基于运行状态数据,判断系统是否满足预设的性能条件;当系统不满足性能条件时,执行S103;当系统满足性能条件时,执行S106。
参照图2,为本发明实施例提供的基于运行状态数据,判断系统是否满足预设的性能条件的方法流程图,具体说明如下所述。
S201、获取运行状态数据中的内存使用数据以及响应时间数据。
对运行状态数据进行分析,从运行内存数据中分析出内存使用数据以及响应时间数据。
S202、对内存使用数据进行处理,获得内存平均使用率和最大内存使用率。
参照图3,为本发明实施例提供的获得内存平均使用率和最大内存使用率的方法流程图,具体说明如下所述。
S301、对内存使用数据进行处理,获取多条内存使用记录。
内存使用数据中包含多条内存使用记录,每天内存使用记录为系统在运行的过程中按照预设的时间段,周期性生成的记录,每个内容使用记录中包含系统对应的周期内的内存使用数据;示例性,时间段可以为一分钟、两分钟或是半分钟,此处的时间段可以根据实际需求进行设置。
优选的,周期性生成内存使用记录时,可以使用主流的监控工具生成,使用监控工具监控系统,并周期性的生成内存使用记录。
S302、确定每条内存使用记录中的内存使用率。
优选的,内存使用率可以使用MUR标识,其中,MUR的英文全称为:MemoryUsedRate。
S303、将数值最大的内存使用率确定为最大内存使用率。
最大内存使用率(MostMemoryUsedRate,MMUR)的公式如下所述:
其中,MUR表示内存使用率。
S304、将各个内存使用率进行求均值运算,得到内存平均使用率。
本发明实施例提供的方法中,可对各个内存使用率进行加权计算,即可得到内存平均使用率(AverageMemoryUsedRate,AMUR),此处的加权计算即为求均值运算,对应的运算公式如下所示:
其中,n为内存使用率的个数。
S203、对响应时间数据进行处理,获得最大响应时间和历史平均处理时间。
参照图4,为本发明实施例提供的获得最大响应时间和历史平均处理时间的方法流程图,具体说明如下所述。
S401、对响应时间数据进行处理,获取多条历史响应记录。
响应时间数据可以为系统的应用的响应数据的集合,系统的应用在接收到处理请求后,响应于该处理请求进行对应的处理,进而生成对应的响应记录。优选的,可以从响应时间数据中分析多条历史响应记录。
S402、确定每条响应记录中的历史响应时间。
优选的,历史响应时间可以使用RT表示,其中,RT的英文全称为RespondTime。
S403、将数值最大的历史响应时间确定为最大响应时间。
S404、对各个历史响应时间进行求均值运算,得到历史平均处理时间。
对各个历史响应时间进行求和,并将得到的和处于各个历史响应时间的总个数,由此得到历史平均处理时间(AverageRespondTime,ART),具体的公式如下所述:
其中,n为各个历史响应时间的总个数。
S204、基于内存平均使用率、最大内存使用率、最大响应时间以及历史平均处理时间,判断系统是否满足预设的性能条件。
参照图5,为本发明实施例提供的基于内存平均使用率、最大内存使用率、最大响应时间以及历史平均处理时间,判断系统是否满足预设的性能条件方法流程图,具体说明如下所述。
S501、将内存平均使用率与预设的第一使用率进行对比。
S502、将最大内存使用率与预设的第二使用率进行对比。
S503、将最大响应时间与预设的第一时间进行对比。
S504、将历史平均处理时间与预设的第二时间进行对比。
S505、当内存平均使用率小于或等于第一使用率、最大内存使用率小于或等于第二使用率、最大响应时间小于或等于第一时间且历史平均处理时间小于或等于第二时间时,确定系统满足性能条件。
需要说明的是,第一使用率、第二使用率、第一时间、以及第二时间均为根据实际需求进行设置的。
进一步的,当出现以下任意一种情况时,可确定系统不满足性能条件:
情况一:内存平均使用率不小于或等于第一使用率;
情况二:最大内存使用率不小于或等于第二使用率;
情况三:最大响应时间不小于或等于第一时间;
情况四:历史平均处理时间不小于或等于第二时间。
S103、判断系统的第一垃圾回收耗时是否超时;若确定系统的第一垃圾回收耗时超时,则执行S104;若确定系统的第一垃圾回收耗时未超时,则执行S105。
优选的,此处的第一垃圾回收耗时可以理解为GC耗时,判断系统的第一垃圾回收耗时是否超时可以理解为判断系统的GC耗时是否超时,在判断系统的第一垃圾回收耗时是否超时时,可以根据系统的GC日志进行分析,优选的,GC日志中包含两个时间,一个是进行整体垃圾回收的时间,为Full Garbage Collection Time,简称为FullGCT;另一个是进行垃圾回收的时间,可以为对新生代的垃圾回收的时间,为Garbage Collection Time,简称为GCT。
示例性的,在GC日志中,关于新生代的垃圾回收的日志的内容的相关编程如:
[GC[PSYoungGen:274931K->10738K(274944K)]371093K->147186K(450048K),0.0668480secs][Times:user=0.17sys=0.08,real=0.07secs]。
示例性的,在GC日志中,关于对整体垃圾回收的日志的内容的相关编程如:
[Full GC[PSYoungGen:10738K->0K(274944K)][ParOldGen:136447K->140379K(302592K)]147186K->140379K(577536K)[PSPermGen:85411K->85376K(171008K)],0.6763541secs][Times:user=1.75sys=0.02,real=0.68secs]。
进一步的,上述关于新生代的垃圾回收的日志的内容的相关编程和对整体垃圾回收的日志的内容的相关编程的内容仅为示例的内容,本发明不局限于上述示例的内容。
优选的,在判断系统的GC耗时是否超时时,可以根据GC日志中的各个GCT进行判断,示例性的,对各个GCT进行求均值运算,从而得到第一耗时均值,当第一耗时均值大于预设的第一耗时时,可以确定系统的GC耗时超时,否则,可以确定系统的GC耗时不超时,第一耗时可根据实际需求进行设置。
S104、对系统的新生代的内存参数进行调整。
需要说明的是,对系统的新生代的内存参数进行调整时,可以通过调整JVM参数中的参数-XX:MaxNewSize设置新生代最大空间大小,具体如:
MaxNewSize2=MaxNewSize1×LRT预设÷LRT2;
其中,MaxNewSize2为调整后新生代的内存大小,MaxNewSize1为调整前新生代的内存大小,LRT预设为系统的预设的最大响应时间,LRT2系统的最大响应时间,优选的,LRT2可以为本发明中的S403中的最大响应时间,LRT预设可以为本发明中的S503中的第一时间。
进一步的,JVM参数包括以下内容:
-Xms设置堆的最小空间大小;
-Xmx设置堆的最大空间大小;
-XX:NewSize设置新生代最小空间大小;
-XX:MaxNewSize设置新生代最大空间大小;
老年代空间大小=堆空间大小-年轻代大空间大小。
S105、判断系统的第二垃圾回收耗时是否超时,并在确定系统的第二垃圾回收耗时超时时,对系统的堆的最大内存参数进行调整。
优选的,此处的第二垃圾回收耗时可以理解为FullGC耗时,判断系统的第二垃圾回收耗时是否超时可以理解为判断系统的FullGC耗时是否超时,在判断系统的FullGC耗时是否超时时,可以对GC日志中的各个FullGCT进行求均值运算,得到第二耗时均值,当第二耗时均值大于预设的第二耗时时,确定该系统的的FullGC耗时超时,否则,确定该系统的FullGC耗时不超时,进一步的,第二耗时可以根据实际需求进行设置。
优选的,在对系统的堆的最大内存参数进行调整时,可以通过调整JVM参数中的参数-Xmx设置堆的最大空间大小实现,具体如:
Xmx2=Xmx1×LRT预设÷LRT2;
其中,Xmx2为调整后堆的最大空间大小,Xmx1为调整前堆的最大空间大小,LRT预设以及LRT2可以参照S104中的相关说明,此处不再进行赘述。
S106、确定系统的剩余内存,并在剩余内存大于预设内存时,对系统的堆的最大内存参数进行调整。
本发明实施例提供的方法中,当系统满足性能条件时,确定系统的剩余内存,并将剩余内存与预设内存进行对比,当剩余内存大于预设内存时,对系统的堆的最大内存参数进行调整。
优选的,在对系统的堆的最大内存参数进行调整时,可以增加最大堆大小,具体过程如:
Xmx2=Xmx1×LRT预设÷LRT2;
其中,Xmx2为调整后堆的最大空间大小,Xmx1为调整前堆的最大空间大小,LRT预设以及LRT2可以参照S104中的相关说明,此处不再进行赘述;进一步的,如果调整后,Xmx2大于允许的最大堆内存值(MaxXmx,简称MXmx),则将Xmx2设置为允许的最大堆内存值;
MXmx=TotalMemSize-ResMemSize;
其中:TotalMemSize为总内存大小,ResMemSize为预留内存大小,预留内存为系统临时内存需求所预留,一般为总内存的10%。
通过应用本发明,可以针对不同的情况调整系统的JVM参数,并且,在调整的过程中使用了系统的响应时间,使得系统的JVM参数能够在满足系统的响应时间要求的前提下,最大限额的分配内存给应用,降低OOM发生次数。
本发明实施例提供的方法中,采集系统在预设时间段内的运行状态数据;基于运行状态数据,判断系统是否满足预设的性能条件;当系统不满足性能条件时,判断系统的第一垃圾回收耗时是否超时;若确定系统的第一垃圾回收耗时超时,则对系统的新生代的内存参数进行调整;若确定系统的第一垃圾回收耗时未超时,则判断系统的第二垃圾回收耗时是否超时,并在确定系统的第二垃圾回收耗时超时时,对系统的堆的最大内存参数进行调整。本发明基于系统的运行状态数据,对内存参数进行调整,整个过程无需人工参与,减少人力的投入,提高调整JVM参数的效率。
参照图6,为本发明实施例提供的JVM参数的调整方法的场景示例图,具体的流程如:
1、用户初始化系统的应用,并使系统运行一段时间,并收集系统在这段时间的运行状态信息,其中,运行状态信息包含但不限于系统的GC日志、内存使用情况以及应用日志等内容,对运行状态信息进行分析;此时JVM的参数为虚拟机默认值。
2、系统运行过程中,根据收集到的JVM日志中FullGC之后老年代的大小,参照JavaPerformance里面的推荐公式来进行初始化设置,设置后重新运行应用进行分析,具体参数设置如下:
1)Java整个堆大小设置,Xmx和Xms设置为老年代存活对象的3-4倍,即FullGC之后的老年代内存占用的3-4倍;
2)年轻代Xmn的设置为老年代存活对象的1-1.5倍;
3)老年代的内存大小设置为老年代存活对象的2-3倍。
3、根据应用日志中获取的系统响应时间数据以及内存使用数据,计算出历史平均时间、最大响应时间、内存平均使用率和最大内存使用率,并对照系统目标性能进行判断。
4、如果不满足性能指标,则判断系统响应时间是否满足需求,当系统响应时间不满足需求时,需要判断系统是否存在GC耗时超时,或是FullGC耗时超时的情况;如果存在GC耗时超时,或是FullGC耗时超时的情况,则需要对系统的JVM参数进行调整;进一步的,不同的超时情况,调整的方式不同,具体的调整方法如上所述,此处不再进行赘述。
需要说明的是,如果系统响应时间满足需求时,判断系统的剩余内存是否大于预设值,如果系统的剩余内存,则增加最大堆大小,如果系统的剩余内存不大于预设值,则结束。
进一步的,在对系统的JVM参数进行调整后,基于系统调整后的参数初始化应用的启动脚本,并运行系统。
本方案基于应用程序目标性能以及主机历史性能数据,通过调整JVM参数来优化应用程序性能的方案,能有有效利用主机资源,提升应用性能,本发明支持用户输入目标性能数据,包括应用程序的最大响应时间,应用程序历史平均处理时间,采用了实时记录主机内存资源利用情况,获取主机历史内存使用率的平均值,为最大化利用主机内存提供依据,根据目标性能数据,和当前系统运行状况,自动给出调整方法,并在下次应用启动后生效,并再次验证调整。
本发明可以自动调整JVM相关参数,对比现有手动调整方法具有自适性,减少技术人员工作量。将系统响应时间以及剩余可用内存维度纳入考虑范围,在满足系统响应时间的前提下,最大程度的利用了主机内存资源,避免了资源的浪费,减少了OOM发生的次数。
与图1所示的方法相对应的,本发明还提供一种JVM参数的调整装置,该装置用于支持图1所示的方法具体的实现,该装置可以应用在由计算机处理设备组建的控制系统中。
参照图7,为本发明实施例提供的一种JVM参数的调整装置的结构示意图,具体说明如下所述:
采集单元601,用于采集系统在预设时间段内的运行状态数据;
第一判断单元602,用于基于所述运行状态数据,判断所述系统是否满足预设的性能条件;
第二判断单元603,用于当所述系统不满足所述性能条件时,判断所述系统的第一垃圾回收耗时是否超时;
第一调整单元604,用于若确定所述系统的第一垃圾回收耗时超时,则对所述系统的新生代的内存参数进行调整;
第二调整单元605,用于若确定所述系统的第一垃圾回收耗时未超时,则判断所述系统的第二垃圾回收耗时是否超时,并在确定系统的第二垃圾回收耗时超时时,对所述系统的最大堆的内存参数进行调整。
本发明实施例提供的装置中,采集系统在预设时间段内的运行状态数据;基于运行状态数据,判断系统是否满足预设的性能条件;当系统不满足性能条件时,判断系统的第一垃圾回收耗时是否超时;若确定系统的第一垃圾回收耗时超时,则对系统的新生代的内存参数进行调整;若确定系统的第一垃圾回收耗时未超时,则判断系统的第二垃圾回收耗时是否超时,并在确定系统的第二垃圾回收耗时超时时,对系统的堆的最大内存参数进行调整。本发明基于系统的运行状态数据,对内存参数进行调整,整个过程无需人工参与,减少人力的投入,提高调整JVM参数的效率。
在本发明提供的另一实施例中,该装置还包括:
确定单元,用于当所述系统满足所述性能条件时,确定所述系统的剩余内存;当所述剩余内存大于预设剩余内存时,对所述系统的堆的最大内存参数进行调整。
在本发明提供的另一实施例中,该装置的第一判断单元602,包括:
第一获取子单元,用于获取所述运行状态数据中的内存使用数据以及响应时间数据;
第二获取子单元,用于对所述内存使用数据进行处理,获得内存平均使用率和最大内存使用率;
第三获取子单元,用于对所述响应时间数据进行处理,获得最大响应时间和历史平均处理时间;
判断子单元,用于基于所述内存平均使用率、所述最大内存使用率、所述最大响应时间以及所述历史平均处理时间,判断所述系统是否满足预设的性能条件。
在本发明提供的另一实施例中,该装置的第二获取子单元,包括:
第一获取模块,用于对所述内存使用数据进行处理,获取多条内存使用记录;
第一确定模块,用于确定每条所述内存使用记录中的内存使用率;
第二确定模块,用于将数值最大的内存使用率确定为最大内存使用率;
第一运算模块,用于将各个所述内存使用率进行求均值运算,得到内存平均使用率。
在本发明提供的另一实施例中,该装置的第三获取子单元,包括:
第二获取模块,用于对所述响应时间数据进行处理,获取多条历史响应记录;
第三确定模块,用于确定每条所述响应记录中的历史响应时间;
第四确定模块,用于将数值最大的历史响应时间确定为最大响应时间;
第二运算模块,用于对各个所述历史响应时间进行求均值运算,得到历史平均处理时间。
在本发明提供的另一实施例中,该装置的判断子单元,包括:
第一对比模块,用于将所述内存平均使用率与预设的第一使用率进行对比;
第二对比模块,用于将所述最大内存使用率与预设的第二使用率进行对比;
第三对比模块,用于将所述最大响应时间与预设的第一时间进行对比;
第四对比模块,用于将所述历史平均处理时间与预设的第二时间进行对比;
第五确定模块,用于当所述内存平均使用率小于或等于所述第一使用率、所述最大内存使用率小于或等于所述第二使用率、所述最大响应时间小于或等于所述第一时间且所述历史平均处理时间小于或等于所述第二时间时,确定所述系统满足所述性能条件。
本发明实施例还提供了一种存储介质,所述存储介质包括存储的指令,其中,在所述指令运行时控制所述存储介质所在的设备执行上述JVM参数的调整方法。
本发明实施例还提供了一种电子设备,其结构示意图如图8所示,具体包括存储器701,以及一个或者一个以上的指令702,其中一个或者一个以上指令702存储于存储器701中,且经配置以由一个或者一个以上处理器703执行所述一个或者一个以上指令702执行上述JVM参数的调整方法。
上述各个实施例的具体实施过程及其衍生方式,均在本发明的保护范围之内。本发明实施例提供的JVM参数的调整装置中的各个单元、子单元以及模块的实现流程以及功能可以参照本发明提供的关于JVM参数的调整方法的相关说明,此处不再进行赘述。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种JVM参数的调整方法,其特征在于,包括:
采集系统在预设时间段内的运行状态数据;
基于所述运行状态数据,判断所述系统是否满足预设的性能条件;
当所述系统不满足所述性能条件时,判断所述系统的第一垃圾回收耗时是否超时;
若确定所述系统的第一垃圾回收耗时超时,则对所述系统的新生代的内存参数进行调整;
若确定所述系统的第一垃圾回收耗时未超时,则判断所述系统的第二垃圾回收耗时是否超时,并在确定系统的第二垃圾回收耗时超时时,对所述系统的堆的最大内存参数进行调整。
2.根据权利要求1所述的方法,其特征在于,还包括:
当所述系统满足所述性能条件时,确定所述系统的剩余内存;
当所述剩余内存大于预设剩余内存时,对所述系统的堆的最大内存参数进行调整。
3.根据权利要求1所述的方法,其特征在于,所述基于所述运行状态数据,判断所述系统是否满足预设的性能条件,包括:
获取所述运行状态数据中的内存使用数据以及响应时间数据;
对所述内存使用数据进行处理,获得内存平均使用率和最大内存使用率;
对所述响应时间数据进行处理,获得最大响应时间和历史平均处理时间;
基于所述内存平均使用率、所述最大内存使用率、所述最大响应时间以及所述历史平均处理时间,判断所述系统是否满足预设的性能条件。
4.根据权利要求3所述的方法,其特征在于,所述对所述内存使用数据进行处理,获得内存平均使用率和最大内存使用率,包括:
对所述内存使用数据进行处理,获取多条内存使用记录;
确定每条所述内存使用记录中的内存使用率;
将数值最大的内存使用率确定为最大内存使用率;
将各个所述内存使用率进行求均值运算,得到内存平均使用率。
5.根据权利要求3所述的方法,其特征在于,所述对所述响应时间数据进行处理,获得最大响应时间和历史平均处理时间,包括:
对所述响应时间数据进行处理,获取多条历史响应记录;
确定每条所述响应记录中的历史响应时间;
将数值最大的历史响应时间确定为最大响应时间;
对各个所述历史响应时间进行求均值运算,得到历史平均处理时间。
6.根据权利要求3所述的方法,其特征在于,所述基于所述内存平均使用率、所述最大内存使用率、所述最大响应时间以及所述历史平均处理时间,判断所述系统是否满足预设的性能条件,包括:
将所述内存平均使用率与预设的第一使用率进行对比;
将所述最大内存使用率与预设的第二使用率进行对比;
将所述最大响应时间与预设的第一时间进行对比;
将所述历史平均处理时间与预设的第二时间进行对比;
当所述内存平均使用率小于或等于所述第一使用率、所述最大内存使用率小于或等于所述第二使用率、所述最大响应时间小于或等于所述第一时间且所述历史平均处理时间小于或等于所述第二时间时,确定所述系统满足所述性能条件。
7.一种JVM参数的调整装置,其特征在于,包括:
采集单元,用于采集系统在预设时间段内的运行状态数据;
第一判断单元,用于基于所述运行状态数据,判断所述系统是否满足预设的性能条件;
第二判断单元,用于当所述系统不满足所述性能条件时,判断所述系统的第一垃圾回收耗时是否超时;
第一调整单元,用于若确定所述系统的第一垃圾回收耗时超时,则对所述系统的新生代的内存参数进行调整;
第二调整单元,用于若确定所述系统的第一垃圾回收耗时未超时,则判断所述系统的第二垃圾回收耗时是否超时,并在确定系统的第二垃圾回收耗时超时时,对所述系统的最大堆的内存参数进行调整。
8.根据权利要求7所述的装置,其特征在于,还包括:
确定单元,用于当所述系统满足所述性能条件时,确定所述系统的剩余内存;当所述剩余内存大于预设剩余内存时,对所述系统的最大堆的内存参数进行调整。
9.一种存储介质,其特征在于,所述存储介质包括存储的指令,其中,在所述执行运行时控制所述存储介质所在的设备执行如权利要求1-6任意一项所述的JVM参数的调整方法。
10.一种电子设备,其特征在于,包括存储器,以及一个或者一个以上的指令,其中一个或者一个以上指令存储于存储器中,且经配置以由一个或者一个以上处理器执行如权利要求1-6任意一项所述的JVM参数的调整方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211199661.2A CN115469972A (zh) | 2022-09-29 | 2022-09-29 | 一种jvm参数的调整方法及装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211199661.2A CN115469972A (zh) | 2022-09-29 | 2022-09-29 | 一种jvm参数的调整方法及装置、存储介质及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115469972A true CN115469972A (zh) | 2022-12-13 |
Family
ID=84334430
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211199661.2A Pending CN115469972A (zh) | 2022-09-29 | 2022-09-29 | 一种jvm参数的调整方法及装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115469972A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117369954A (zh) * | 2023-12-08 | 2024-01-09 | 成都乐超人科技有限公司 | 一种面向大数据构建的风险处理框架的jvm优化方法和装置 |
-
2022
- 2022-09-29 CN CN202211199661.2A patent/CN115469972A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117369954A (zh) * | 2023-12-08 | 2024-01-09 | 成都乐超人科技有限公司 | 一种面向大数据构建的风险处理框架的jvm优化方法和装置 |
CN117369954B (zh) * | 2023-12-08 | 2024-03-05 | 成都乐超人科技有限公司 | 一种面向大数据构建的风险处理框架的jvm优化方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7979857B2 (en) | Method and apparatus for dynamic memory resource management | |
EP1769352B1 (en) | Method and apparatus for dynamic cpu resource management | |
US20200042338A1 (en) | System and method for memory resizing in a virtual computing environment | |
US10713079B2 (en) | System and method for managing telemetry data and agents in a telemetry system | |
CN111818159B (zh) | 数据处理节点的管理方法、装置、设备及存储介质 | |
US8370472B2 (en) | System and method for efficient machine selection for job provisioning | |
CN102414674B (zh) | 应用效率引擎 | |
US9207984B2 (en) | Monitoring and automatic scaling of data volumes | |
JP5428075B2 (ja) | 性能モニタリングシステム、ボトルネック判定方法及び管理計算機 | |
US8365183B2 (en) | System and method for dynamic resource provisioning for job placement | |
US7340654B2 (en) | Autonomic monitoring in a grid environment | |
US9639446B2 (en) | Trace monitoring | |
US9389916B1 (en) | Job scheduling management | |
US20070271560A1 (en) | Deploying virtual machine to host based on workload characterizations | |
CN104899130B (zh) | 一种应用程序管理方法及系统 | |
EP2386085A1 (en) | Time based context sampling of trace data with support for multiple virtual machines | |
CN106452818A (zh) | 一种资源调度的方法和系统 | |
CN115469972A (zh) | 一种jvm参数的调整方法及装置、存储介质及电子设备 | |
EP3202091B1 (en) | Operation of data network | |
CN115543577A (zh) | 基于协变量的Kubernetes资源调度优化方法、存储介质及设备 | |
JP2015069384A (ja) | 情報処理システム、情報処理システムの制御方法及び情報処理装置の制御プログラム | |
Kurowski et al. | Dynamic grid scheduling with job migration and rescheduling in the GridLab resource management system | |
US20100083034A1 (en) | Information processing apparatus and configuration control method | |
CN116127494A (zh) | 用户并发访问的控制方法及相关装置 | |
Domingues et al. | DRMonitor-a distributed resource monitoring system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |