CN102479155B - 用于网络应用服务器系统的内存过载管理的方法和系统 - Google Patents
用于网络应用服务器系统的内存过载管理的方法和系统 Download PDFInfo
- Publication number
- CN102479155B CN102479155B CN201010577046.1A CN201010577046A CN102479155B CN 102479155 B CN102479155 B CN 102479155B CN 201010577046 A CN201010577046 A CN 201010577046A CN 102479155 B CN102479155 B CN 102479155B
- Authority
- CN
- China
- Prior art keywords
- jvm
- fragment
- session
- target
- target jvm
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/151—Emulated environment, e.g. virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/16—General purpose computing application
- G06F2212/163—Server or database system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明涉及网络服务器系统中Java虚拟机的内存过载管理,提供一种用于网络应用服务器系统的内存过载管理的方法和系统,其中,网络应用服务器系统包含多个处理会话的Java虚拟机JVM,该方法包含:确定将要被重置的一个或多个副本碎片;确定用于存储所述一个或多个副本碎片中相应的副本碎片的一个或多个目标JVM;对于每个目标JVM,判断目标JVM上的空闲内存是否足以存储所述相应的副本碎片;如果所述判断的结果是否定的,则使目标JVM停止创建会话,直到目标JVM的空闲内存足以存储所述相应的副本碎片;把所述相应的副本碎片存储到目标JVM;使目标JVM恢复创建会话。
Description
技术领域
本发明涉及Java虚拟机的性能管理,更具体来说,本发明涉及网络服务器系统中Java虚拟机的内存过载管理。
背景技术
在Java虚拟机(JVM)组成的网络应用服务器系统中,将Java虚拟机作为具有服务器功能的服务器。JVM虚拟机的服务器功能,由JVM上部署的网络应用服务器实例(instance)来实现。多个JVM构成的所谓网格(grid)具有可升级性和容错性的特点。
JVM的服务器功能,包括处理客户机发起的会话。客户机的发起的会话,通过一个代理(proxy),被路由到网络应用服务器系统中的一个或多个JVM上,网络应用服务器实例通过执行在JVM上部署的Java小服务程序(Java servlet),处理会话。具体来说,JVM接收来自客户机的请求,处理请求,并向客户机返回响应。客户机的请求的例子,例如是HTTP(超文本传输协议)请求、SIP(会话初始协议)请求等等。
与会话相关联的会话数据(session data),也存储在网络应用服务器系统中。通常,按照特定于应用的规则,将会话数据划分为不同的数据块(亦称“碎片”(shard))。活动的碎片称为“主碎片”(primaryshard),主碎片的副本,称为“副本碎片”(shard replica)。为了安全性需要,主碎片与其对应的副本碎片必须存储在不同的JVM上。
当网络应用服务器系统的某个JVM例如由于发生故障而停止运行时,该JVM上存储的主碎片以及副本碎片将变得不可用。为了保持与停止运行的JVM上的主碎片相关的客户机的会话的连续性,在其它JVM上存储的与主碎片对应的副本碎片将变成主碎片。这时,要进行碎片重置(shard replacement),就是说,一方面,要将由副本碎片变成的主碎片的副本碎片,存储到与该主碎片的JVM不同的JVM上;另一方面,还要将发生故障的JVM上原先存储的副本碎片转移到其它JVM上。另外,碎片重置在有新的JVM加入网络应用服务器系统的时候也会出现。为了进行碎片重置,需要使用其它JVM上的内存,如果使用的内存超过了该JVM可以提供的最大内存,该JVM就会出现内存过载,从而严重影响该JVM的性能。
发明内容
为了减少发生碎片重置引起的内存过载的情况,本发明提出一种用于网络服务器系统中JVM的内存过载管理的改进方案,以根据JVM上的内存使用情况进行碎片重置。
一方面,提供一种用于网络应用服务器系统的内存过载管理的方法,其中,网络应用服务器系统包含多个处理会话的Java虚拟机,该方法包含:
用于网络应用服务器系统的内存过载管理的方法,其中,网络应用服务器系统包含多个处理会话的Java虚拟机JVM,该方法包含:
确定将要被重置的一个或多个副本碎片;
确定用于存储所述一个或多个副本碎片中相应的副本碎片的一个或多个目标JVM;
对于每个目标JVM,执行下述操作:
判断目标JVM上的空闲内存是否足以存储所述相应的副本碎片;
如果所述判断的结果是否定的,执行下述操作:使目标JVM停止创建会话,直到目标JVM的空闲内存足以存储所述相应的副本碎片;把所述相应的副本碎片存储到目标JVM;使目标JVM恢复创建会话。另一方面,提供一种用于网络应用服务器系统的内存过载管理的系统,其中,网络应用服务器系统包含多个处理会话的Java虚拟机,该系统包含:
监测装置,用于监测导致需要进行碎片重置的事件;副本碎片确定装置,用于确定将要被重置的副本碎片;目标JVM确定装置,用于确定用于存储副本碎片确定装置所确定的副本碎片的目标JVM;判断装置,用于判断目标JVM上的空闲内存是否足以存储所述副本碎片;会话控制装置,用于控制在JVM上创建会话;碎片重置装置,用于将副本碎片存储到目标JVM上。
附图说明
发明内容部分和所附权利要求中阐述了被认为是本发明的特点的创造性特征。但是,通过参照附图阅读下面对示例性实施例的详细说明可更好地理解发明本身以及其使用模式、另外的目标、特征以及优点,在附图中:
图1A和1B是表示一个可在其中应用本发明各种实施例的网络应用服务器系统10的示意图;
图2是表示碎片在不同JVM上的分布的示意图;
图3是表示对图2中分布的碎片进行碎片重置的示意图;
图4是表示按照本发明的实施例的方法的示意性流程图;
图5是表示按照本发明的实施例的系统的示意性框图;
图6A和6B是表示按照本发明实施例估算的内存使用率的实验数据的图表。
具体实施方式
下面参照附图来说明本发明的实施例。在下面的说明中,阐述了许多具体细节以便更全面地了解本发明。但是,对于本技术领域内的技术人员很明显,本发明的实现可不具有这些具体细节。此外,应当理解的是,本发明并不限于所介绍的特定实施例。相反,可以考虑用下面的特征和元素的任意组合来实施和实践本发明。而无论它们是否涉及不同的实施例。因此,下面的方面、特征、实施例和优点仅作说明之用而不应被看作是所附权利要求的要素或限定,除非权利要求中明确提出。
图1A和1B是表示一个可在其中应用本发明各种实施例的网络应用服务器系统10的示意图。
如图1A所示,网络应用服务器系统10,包含目录服务器120和多个Java虚拟机(JVM)110。
如图1B所示,每个JVM上部署有网络应用服务器实例112、容器114和内存过载控制器(MOC,Memory Overload Controller)116。
网络应用服务器实例112用于通过执行在JVM上部署的Java小服务程序,处理会话。
容器114用于提供安全、事务支持等应用服务功能。容器114中存储碎片,也用于存储Java小服务程序。
内存过载控制器116,用于管理相应JVM的内存。在所属技术领域中,JVM的内存,也称作“堆”(heap)。JVM 110采用垃圾回收(GC,Garbage Collection)机制来回收内存空间。空闲内存包括可用的内存和已经被释放变为垃圾的内存,在GC之后,垃圾内存被回收,变为可用内存。
内存过载控制器116的功能,包括控制JVM上的会话接收速率(admission rate),监测GC的结束,收集关于内存使用情况的统计数据。例如,内存过载控制器在一次全局GC(即对JVM所有的内存空间进行垃圾回收)结束之后,可以收集JVM的内存使用率(heaputilization),会话接收速率和未结束的会话(outstanding session)的数量。
图1A示意性地表示,用户在客户机150发起的会话,例如HTTP(超文本传输协议)/SIP(会话初始协议)会话,通过一个代理160,被路由到网络应用服务器系统10中的一个或多个JVM 110上,由相应的网络应用服务器实例112进行处理。例如,当用户在客户机150的浏览器的页面表格(未示出)上完成输入后,将一HTTP请求发送给实现HTTP服务器的JVM 110,JVM 110调用相应的HTTP小服务器程序,在数据库(未示出)搜索相应的数据,建立对该HTTP请求的HTTP响应消息,并将该HTTP响应消息发送回客户机150,供客户机的用户浏览和使用。在这个过程中,因客户机150发起的会话而生成的各种相关联的会话数据,也存储在网络应用服务器系统10中JVM的内存上,直到会话结束。会话结束后,相应的会话数据将变为垃圾,由垃圾回收机制将其占用的内存空间回收。
图1A所示的目录服务器120的一个功能是,通过与每个JVM110协作,例如通过与JVM中的内存过载控制器116协作,将会话的碎片分配在适当的JVM 110上存储,并记录关于碎片和副本碎片的存储位置的信息。目录服务器120采用的碎片分配算法,确保碎片和副本碎片不会存储在相同的容器114中,以保证容错性和高可用性
图2是表示碎片在不同JVM上的分布的示意图。图2显示了三个JVM 110-1、110-2、110-3,图2还显示了6个碎片和6个副本碎片,即主碎片1和副本碎片1、主碎片2和副本碎片2...主碎片6和副本碎片6。如图所示,在某一个时刻,主碎片1和主碎片2被存储在JVM 110-1上,而副本碎片1被存储在JVM 110-2上,副本碎片2被存储在JVM 110-3上;类似地,主碎片3和主碎片4被存储在JVM110-2上,而副本碎片3被存储在JVM 110-1上,副本碎片4被存储在JVM 110-3上;主碎片5和主碎片6被存储在JVM 110-3上,而副本碎片5被存储在JVM 110-1上,副本碎片6被存储在JVM 110-2上。
每个碎片和对应的副本碎片都分布在不同的Java虚拟机上。所属技术领域的技术人员知道,这种内存分配,可以由目录服务器120作出。
图3是表示对图2中分布的碎片进行碎片重置的示意图。具体来说,在某个时刻,例如JVM 110-3发生故障,这种情况在图3中用虚线表示。这时,JVM 110-3上的主碎片5、主碎片6、副本碎片2和副本碎片4将变得不可用。
系统10在监测到JVM 110-3发生故障时,为有关碎片在JVM上重新分配内存。
首先,激活作为主碎片的备份的副本碎片。
由于JVM 110-3上的主碎片5变得不可用,所以,JVM 110-1上的副本碎片5,将变为主碎片5。
类似地,由于JVM 110-3上的主碎片6变得不可用,所以,JVM110-2上的副本碎片6,将变为主碎片6。
其次,进行副本重置。
JVM 110-1上原来存储副本碎片5(图2)已经变成主碎片5(图3),相应地,需要为该主碎片5(图3)建立一个副本碎片。存储的目录服务器120指定一个与JVM 110-1不同的JVM,用于存储副本碎片5。本例中,只有JVM 110-1和JVM 110-2可用,因此,目录服务器120指定在JVM 110-2上存储副本碎片5。
类似地,目录服务器120指定一个与JVM 110-2不同的JVM,用于存储新建立的副本碎片6。本例中,只有JVM 110-1和JVM 110-2可用,因此,指定在JVM 110-1上存储副本碎片6。
目录服务器120还指定一个JVM,用于转移JVM 110-3原先存储的副本碎片2(图2)。本例中,主碎片2存储在JVM 110-1上,因此,指定在JVM 110-1上存储副本碎片2(图3)。
类似地,目录服务器还指定一个JVM,用于转移JVM 110-3原先存储的副本碎片4(图2)。由于主碎片4存储在JVM 110-2上,因此,指定在JVM 110-1上存储副本碎片2(图3)。
结果,如图3所示,在JVM 110-1上,存储有主碎片1、主碎片2和副本碎片3,以及主碎片5、副本碎片6和副本碎片4。其中,副本碎片6和副本碎片4是新增加的,需要占用额外的内存。
类似地,在JVM 110-2上,存储有主碎片3、主碎片4和副本碎片1,以及主碎片6、副本碎片5和副本碎片2。其中,副本碎片5和副本碎片2是新增加的,需要占用额外的内存。
上述过程,相当于分别将副本碎片6、副本碎片4、副本碎片5和副本碎片2从一个位置转移到另一个位置,因此,这个过程也被称作“副本重置”。由于涉及的碎片都是会话数据的碎片,因此,上述过程也被称作“会话重置”(session replacement)。
图3所示的是在假设JVM 110-1和110-2上有足够的空闲内存的情况下,在进行副本重置或会话重置后,会话的碎片和副本碎片在JVM 110-1和110-2上的分布。
如果在JVM 110-3发生故障时,JVM 110-1和/或JVM 110-2上的空闲内存不能满足进行副本重置所需的内存量,则目录服务器对JVM 110-1和/或JVM 110-2的指定,将导致相应的JVM的性能下降,甚至出错,例如发生宕机和重启动现象。图4是表示按照本发明的实施例的方法的示意性流程图。参看图4,该方法的过程在监测到导致需要进行碎片重置的事件后开始。现有技术中存在各种监测方式,其中包括所谓的“心跳(heart-beating)报告”机制。例如,JVM 110-1、110-2和110-3定期地向目录服务器120发送状态报告,如果目录服务器120在预定的时间没有收到来自某个JVM的报告,就判定该JVM发生故障,这时,与该JVM上主碎片对应的、在其它JVM上存储的副本碎片将变成主碎片。这时,需要进行碎片重置,一方面,要为由副本碎片变成的主碎片,在与该主碎片的JVM不同的JVM上存储副本碎片;另一方面,还要将发生故障的JVM上原先存储的副本碎片转移到其它JVM上。
首先,在步骤410,确定将要被重置的一个或多个副本碎片。
例如,如图3所示,当JVM 110-3发生故障时,确定副本碎片5、副本碎片6、副本碎片2和副本碎片4需要重置。这些碎片的副本,都有确定的大小。
然后,在步骤420,确定用于存储将要被重置的一个或多个副本碎片中相应副本碎片的一个或多个目标JVM。
可以采用现有技术中的任何方式来实现步骤420。例如,如图3所示,按照“在不同JVM上存储主碎片及其副本碎片”的原则,确定副本碎片5和副本碎片2将要被存储在JVM 110-2上;副本碎片6和副本碎片4将要被存储在JVM 110-1上。
按照本发明一个实施例,可以在遵守“在不同JVM上存储主碎片及其副本碎片”的原则的前提下,挑选出平均会话寿命短的JVM,作为目标JVM。按照实际需要,可以将平均会话寿命较短的多个JVM作为目标JVM,因此可以挑选出一个或多个目标JVM。
会话寿命也称“会话生命周期”,指JVM上的一个会话从创建到结束所经历的时间。平均会话寿命,是JVM上的多个会话的会话寿命的平均值。所属技术领域的技术人员应当明白,JVM 110上的MOC116可以记录关于JVM上的会话的会话寿命的统计数据,根据该数据不难得出或导出JVM上的平均会话寿命。
JVM上的内存使用量(heap usage),即使用的内存的量,与JVM上活动的会话个数相关。当一个会话的生命周期结束时,该会话的相关数据所占用的内存将被释放,因此,会话的寿命越短,其相关数据所占用的内存就将更早地被释放,因此,JVM上的平均会话寿命越短,该JVM有足够空闲内存的概率就越大。
下面给出如何计算平均会话寿命的一个例子。
如前所述,内存过载控制器可以在第k个全局GC完成之后,收集当前JVM上的会话接收速率(admiRatek)和未结束的会话数量(outs tan dingSessk)。其中,admiRatek表示从第k个全局GC之后到当前时刻的时间段内JVM接收会话的速率,即单位时间接收的会话的数量;outs tan dingSessk表示在第k个全局GC完成之后的当前时刻JVM上尚未结束的会话的数量。
会话的寿命的估计值,与会话接收速率和未结束的会话个数有关。假设会话接收速率不变,未结束的会话的数量越大,表明会话的寿命越长;假设未结束的会话个数不变,则会话接收速率越大,表明会话的寿命越短。
跟据排队论中的little公式,在一个稳定系统中的平均客户数,等于平均客户到达率乘以客户在系统中停留的平均时间(参考维基百科http://en.wikipedia.org/wiki/Little′s_law)。这里的平均指的是一个长时间观察获得的结果。对应little公式中的平均客户到达率,本发明的实施例使用平均会话接收速率(avgAdmiRatek),表示一个很长的观察周期内得到的会话接收速率。会话接收速率admiRatek是能测量到的在一个较短周期(第k个周期)的平均速率。根据经验,发明人认为第k-1个周期的会话接收速率admiRatek-1和第k个周期的会话接收速率admiRatek对第k个周期的平均会话接收速率avgAdmiRatek有显著影响,而其余周期的会话接收速率对其影响不大。因此,给admiRatek-1和admiRatek分别赋予0.5的权重,获得第k个周期的平均会话接收速率如下
avgAdmiRatek=0.5*admiRatek+0.5*admiRatek-1 (1)
Little公式中描述的客户在系统中停留的平均时间,即我们所要求的avgSessLifeTimek。而平均客户数,即我们所说的outs tan dingSessk。因此,可以按下式(2)或(2’),根据outs tan dingSessk和avgAdmiRatek,估算JVM上的平均会话寿命(avgSessLifeTimek):
avgSessLifeTimek=outs tan dingSessk/avgAdmiRatek (2)
或
avgSessLifeTimek=outs tan dingSessk/(0.5*admiRatek+0.5*admiRatek-1)(2’)
以下接着步骤420说明方法过程的其它步骤。以下各步骤是分别针对每个目标JVM所作的处理。
在步骤430,判断目标JVM上的空闲内存是否足以存储所述相应的副本碎片。
例如,估计JVM110-2上的空闲内存量,判断JVM 110-2上的空闲内存,是否足以存储副本碎片5和副本碎片2。由于存储副本碎片5和副本碎片2的大小都是已知的,将这两个大小之和与估计的空闲内存量进行比较,就能判断出JVM 110-2上的空闲内存是否能够容纳存储副本碎片5和副本碎片2。
JVM 110的空闲内存的量,可以从JVM 110的内存过载控制器116获得。所属技术领域的技术人员知道,内存过载控制器116能提供每次全局GC完成之后的空闲内存量。至于其余时间的空闲内存量,则可以根据内存过载控制器116收集的统计数据进行估算。
按照本发明的一个实施例,可以通过以下方式估计JVM上的空闲内存量。内存过载控制器在第k个全局GC完成之后,收集到该时刻的内存使用率(heapUtilk)即内存使用量占内存总量(total heap)的百分比,以及JVM上的会话接收速率(admiRatek)。利用这两个数据,我们可以用下面的公式(3)得到第k和第k+1个全局GC之间的内存使用率的估计值(heapUtilEstimk):
heapUtilEstimk=a*heapUtilk+b*admiRatek (3)
公式(3)中的a和b是经验参数,可以从过去若干个采样周期中得到的会话接收速率和内存使用率学习到。使用的学习方法可以是利用最小二乘法进行线性拟合,或者利用卡尔曼滤波(Kalman Filter)进行线性拟合。由于JVM的总内存量(totalHeap)已知,此时的空闲内存量(freeHeapEstimk)可以下式(4)或(4’)估算:
freeHeapEstimk=totalHeap-heapUtilEstimk*totalHeap (4)
或
freeHeapEstimk=totalHeap-(a*heapUtilk+b*admiRatek)*totalHeap (4’)
以下参照图6A和6B,说明上述计算方式的有效性。
图6A和6B是表示按照本发明实施例估算的内存使用率的实验数据的图表,图6A所示表中的数据,含有在45个采样点(0...44)的会话接收速率AdmiRate和内存使用率HeapUtil的实际测量值,以及按照公式(4)计算的内存使用率HeapUtilEstim。其中,参数a和b是根据最近10个周期的采样数据,利用线性拟合法计算得出的。
图6B的曲线图是图6A,曲线图的纵轴表示内存使用率;横轴表示按时间顺序的采样点,从第2个采样点(k=1)开始,采样点k-1至采样点k表示一个采样周期。曲线610代表图6A所示的实际测量的内存使用率HeapUtil的值,曲线620代表图6A所示的按照公式(4)计算的内存使用率HeapUtilEstim的值。图6B直观地表明,第k个周期(k=1...44)实际采集到的内存使用率heapUtil(k)与计算的heapUtilEstim(k),绝大部分都非常吻合,表明按照公式(4)计算的内存使用率估值,基本上与实际情况相符,可以有效地应用于对JVM的内存使用率/使用量的估算。
以下接着步骤430说明方法过程的其它步骤。
如果判断一个目标JVM上的空闲内存足以存储所述相应的副本碎片,过程前进到步骤490,进行碎片重置,即把相应的副本碎片存储到目标JVM。碎片重置过程的细节如上文结合图2和图3所述的类似,在此不再赘述。
如果判断目标JVM上的空闲内存不足以存储所述相应的副本碎片,过程前进到步骤440。
在步骤440,使目标JVM停止创建会话。
按照本发明一个实施例,可以通知JVM(例如JVM 110-2)停止创建会话,以便释放内存,用于碎片重置。JVM 110-2接到通知后,将暂时停止从代理160接收创建新的会话的请求。随着时间的推移,一方面,JVM 110-2中已有的会话陆续结束,就能释放出所占用的内存,另一方面,由于JVM 110-2暂停创建新的会话,从而不必为新的会话分配内存,这样,JVM 110-2就有可能在尽可能短的时间内,释放出足够的内存用于碎片重置。
然后,如图中的菱形框450所示,等待目标JVM释放足够的内存。
在等待目标JVM释放内存的过程中,如果空闲内存足以存储所述相应的副本碎片,则过程前进到步骤460。
在步骤460,在目标JVM上进行碎片重置,即把相应的副本碎片存储到目标JVM。
然后,在步骤470,使目标JVM恢复创建会话,即允许停止创建会话的目标JVM重新创建会话。
按照本发明一个实施例,在实践中,可以通过目录服务器120与内存过载控制器116之间的交互,实现步骤450-470。例如,JVM 110中的MOC 116在检测到JVM的空闲内存已经足够容纳对应的副本碎片时,通知目录服务器120。在将副本碎片存储到目标JVM 110之后,目录服务器120通知目标JVM 110恢复接受来自代理160的创建新的会话的请求。
在实施本发明时,可以由内存过载控制器116通知代理160,从而停止或恢复在该JVM 100上创建新的会话。
至此,以上说明了本发明提供的用于包含多个Java虚拟机的网络应用服务器系统的内存过载管理的方法的各种实施方式。
按照同一个发明构思,本发明也提供一种用于包含多个Java虚拟机的网络应用服务器系统的内存过载管理的系统。
图5是表示按照本发明的实施例的系统50的示意性框图。参看图5,系统50包含副本碎片确定装置510、目标JVM确定装置520、判断装置530、控制装置540、碎片重置装置590。
副本碎片确定装置510用于确定将要被重置的一个或多个副本碎片。
例如,如图3所示,当JVM 110-3发生故障时,确定副本碎片5、副本碎片6、副本碎片2和副本碎片4需要重置。这些碎片的副本,都有确定的大小。
目标JVM确定装置520用于确定用于存储副本碎片确定装置510所确定的副本碎片中相应的副本碎片的一个或多个目标JVM。
例如,按照“将碎片和对应的副本碎片存储在不同JVM上”的原则,确定副本碎片5和副本碎片2将要被存储在JVM 110-2上;副本碎片6和副本碎片4将要被存储在JVM 110-1上。
判断装置530用于判断目标JVM上的空闲内存是否足以存储所述相应的副本碎片。
例如,判断JVM 110-2上的空闲内存,是否足以存储副本碎片5和副本碎片2。由于存储副本碎片5和副本碎片2的大小都是已知的,将这两个大小之和与空闲内存的量进行比较,就能判断出JVM 110-2上的空闲内存是否能够容纳存储副本碎片5和副本碎片2。
所属技术领域的技术人员JVM 110-2的空闲内存的量,例如可以从JVM 110-2的内存过载控制器116收集的各种统计数据中直接获得或者导出。
会话控制装置540被配置得可以控制在目标JVM上创建会话,更进一步,判断装置530可以根据会话控制装置540对目标JVM上的空闲内存是否足以存储所述相应的副本碎片的判断结果,控制在目标JVM上创建会话。
按照本发明一个实施例,会话控制装置540可以使目标JVM停止创建会话。特别地,会话控制装置540被配置得在目标JVM上的空闲内存不足以存储相应的副本碎片时使目标JVM停止创建会话。
按照本发明一个实施例,会话控制装置540可以使目标JVM恢复创建会话。特别地,会话控制装置540被配置得在目标JVM上的空闲内存足以存储相应的副本碎片时使目标JVM恢复创建会话。
碎片重置装置590被配置得在目标JVM上的空闲内存足以存储相应的副本碎片时将相应的副本碎片存储到目标JVM上。
按照本发明的一个实施例,目标JVM确定装置520选择平均会话寿命短的JVM,作为目标JVM。平均会话寿命的长短是相对而言的,在需要多个JVM时,可以选择多个平均会话寿命相对较短的JVM。
按照本发明一个实施例,系统50进一步包含一个计算装置(未予示出),该计算装置按照上文所述的公式(2)或(2’)计算JVM的平均会话寿命avgSessLifeTimek。
按照本发明一个实施例,系统50进一步包含一个计算装置(未予示出),该计算装置用上文所述的公式(4)或(4’)计算目标JVM中的空闲内存freeHeapEstimk。
以上描述了根据本发明的实施例的用于网络应用服务器系统的内存过载管理的系统,由于上文已经详细地描述了根据本发明的实施例的用于网络应用服务器系统的内存过载管理的方法,在上述对系统的描述中,省略了明显与对用于网络应用服务器系统的内存过载管理的方法的描述重复、或者很容易从对用于网络应用服务器系统的内存过载管理的方法的描述中引申得出的内容。
与现有技术相比,本发明的各种实施例具有明显的有益效果。在本发明的实施例中,由于只在目标JVM有足够内存的情况下才进行碎片重置,从而能避免因碎片重置而导致的目标JVM上的内存使用率超过限度的问题;在本发明的实施例中,通过选择平均会话生命周期短的JVM作为碎片重置的目标JVM,可以挑选出潜在的空闲内存较大的JVM;通过在目标JVM中暂停创建新的会话,使得能够在尽可能短的时间获得空闲内存。
应指出的是,以上描述仅为示例,而不是对本发明的限制。在本发明的其他实施例中,该方法可具有更多、更少或不同的步骤,对步骤的编号,是为了使说明更加简明,而不是对各步骤之间的顺序关系的严格限定,各步骤与步骤之间的顺序可以与所描述的不同。例如,在本发明的一些实施例中,可以没有上述一个或多个可选步骤。每个步骤的具体执行方式可以与所描述的不同。所有这些变化都处于本发明的精神和范围之内。
本发明可以硬件、软件、或硬件与软件的结合的方式实现。本发明可以集中的方式在一个计算机系统中实现,或以分布方式实现,在这种分布方式中,不同的部件分布在若干互连的计算机系统中。适于执行本文中描述的方法的任何计算机系统或其它装置都是合适的。一种典型的硬件和软件的组合可以是带有计算机程序的通用计算机系统,当该计算机程序被加载和执行时,控制该计算机系统而使其执行本发明的方法,并构成本发明的装置。
本发明也可体现在计算机程序产品中,该程序产品包含使能实现本文中描述的方法的所有特征,并且当其被加载到计算机系统中时,能够执行所述方法。
以上参照优选实施例具体示出和说明了本发明,本领域技术人员应理解,可在形式和细节上对其进行各种改变而不会背离本发明的精神和范围。
Claims (15)
1.用于网络应用服务器系统的内存过载管理的方法,其中,网络应用服务器系统包含多个处理会话的Java虚拟机JVM,该方法包含:
确定将要被重置的一个或多个副本碎片;
确定用于存储所述一个或多个副本碎片中相应的副本碎片的一个或多个目标JVM;
对于每个目标JVM,执行下述操作:
判断目标JVM上的空闲内存是否足以存储所述相应的副本碎片;
如果所述判断的结果是否定的,执行下述操作:
使目标JVM停止创建会话,直到目标JVM的空闲内存足以存储所述相应的副本碎片;
把所述相应的副本碎片存储到目标JVM;
使目标JVM恢复创建会话。
2.权利要求1的方法,其中,如果所述判断的结果是肯定的,则把所述相应的副本碎片存储到目标JVM。
3.权利要求1的方法,其中,所述确定用于存储所述一个或多个副本碎片中相应的副本碎片的一个或多个目标JVM,包括将平均会话寿命短的JVM,作为目标JVM。
4.权利要求3的方法,进一步包括计算JVM的平均会话寿命avgSessLifeTimek:
avgSessLifeTimek=outs tan dingSessk/(0.5*admiRatek+0.5*admiRatek-1)
其中,outs tan dingSessk是当前未结束的会话数量,admiRatek是当前的会话接收速率,admiRatek-1是最近两次全局垃圾回收之间的会话接收速率。
5.权利要求1至4的任何之一的方法,所述判断目标JVM上的空闲内存是否足以存储所述相应的副本碎片进一步包含用下式计算目标JVM中的空闲内存量freeHeapEstimk:
freeHeapEstimk=totalHeap-heap UtilEstimk*totalHeap
其中,totalHeap表示内存总量,heapUtilEstimk是最近一次全局垃圾回收与下一次全局垃圾回收之间的内存使用率的估计值。
6.权利要求5的方法,其中,heapUtilEstimk=a*heap Utilk+b*admiRatek,
其中,heapUtilk是在最近一次全局垃圾回收完成之后的内存使用率,admiRatek是当前的会话接收速率,a和b是根据过去的采样周期中得到的会话接收速率和内存使用率学习到的经验参数。
7.权利要求1的方法,其中,所述网络应用服务器系统包含一个目录服务器,由所述目录服务器将所述副本碎片存储到所述目标JVM。
8.权利要求7的方法,进一步包含:
在将所述相应的副本碎片存储到所述目标JVM后,由所述目录服务器通知目标JVM恢复接受创建会话的请求。
9.用于网络应用服务器系统的内存过载管理的系统,其中,网络应用服务器系统包含多个处理会话的Java虚拟机,该系统包含:
副本碎片确定装置,用于确定将要被重置的一个或多个副本碎片;
目标JVM确定装置,用于确定用于存储副本碎片确定装置所确定的一个或多个副本碎片的一个或多个目标JVM;
判断装置,用于判断一个目标JVM上的空闲内存是否足以存储相应的副本碎片;
会话控制装置,用于根据目标JVM上的空闲内存是否足以存储相应的副本碎片控制在目标JVM上创建会话;
碎片重置装置,用于在目标JVM上的空闲内存足以存储相应的副本碎片时将副本碎片存储到目标JVM上。
10.权利要求9的系统,其中,会话控制装置被配置得在目标JVM上的空闲内存不足以存储相应的副本碎片时使目标JVM停止创建会话。
11.权利要求10的系统,其中,会话控制装置被配置得在目标JVM上的空闲内存足以存储相应的副本碎片时使目标JVM恢复创建会话。
12.权利要求9至11的任何之一的系统,其中,目标JVM确定装置被配置得将平均会话寿命短的JVM,作为目标JVM。
13.权利要求12的系统,进一步包括按照下式计算JVM的平均会话寿命avgSessLifeTimek的装置:
avgSessLifeTimek=outs tan dingSessk/(0.5*admiRatek+0.5*admiRatek-1)
其中,outs tan dingSessk是当前未结束的会话数量,admiRatek是当前的会话接收速率,admiRatek-1是最近两次全局垃圾回收之间的会话接收速率。
14.权利要求9至11的任何之一的系统,进一步包含用下式计算目标JVM中的空闲内存量freeHeapEstimk的装置:
freeHeapEstimk=totalHeap-heap UtilEstimk*totalHeap
其中,totalHeap表示内存总量,heap UtilEstimk是最近一次全局垃圾回收与下一次全局垃圾回收之间的内存使用率的估计值。
15.权利要求14的系统,其中,heap UtilEstimk=a*heap Utilk+b*admiRatek,
heapUtilk是在最近一次全局垃圾回收完成之后的内存使用率(heapUtilk),admiRatek是当前的会话接收速率,a和b是根据过去的采样周期中得到的会话接收速率和内存使用率学习到的经验参数。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010577046.1A CN102479155B (zh) | 2010-11-30 | 2010-11-30 | 用于网络应用服务器系统的内存过载管理的方法和系统 |
US13/281,757 US8578379B2 (en) | 2010-11-30 | 2011-10-26 | Managing memory overload of java virtual machines in web application server systems |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010577046.1A CN102479155B (zh) | 2010-11-30 | 2010-11-30 | 用于网络应用服务器系统的内存过载管理的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102479155A CN102479155A (zh) | 2012-05-30 |
CN102479155B true CN102479155B (zh) | 2014-07-02 |
Family
ID=46091807
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010577046.1A Active CN102479155B (zh) | 2010-11-30 | 2010-11-30 | 用于网络应用服务器系统的内存过载管理的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8578379B2 (zh) |
CN (1) | CN102479155B (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9003404B2 (en) * | 2012-03-22 | 2015-04-07 | Verizon Patent And Licensing Inc. | Determining hardware functionality in a cloud computing environment |
CA2914603A1 (en) * | 2013-06-06 | 2014-12-11 | Ericsson Ab | Defragmentation of adaptive streaming segment files in a content delivery network |
CN103631662B (zh) * | 2013-12-20 | 2017-09-26 | 普元信息技术股份有限公司 | 复杂事件处理云平台事件分析引擎容量评估的系统及方法 |
US9908027B2 (en) * | 2014-04-22 | 2018-03-06 | Nike, Inc. | Article of apparel with dynamic padding system |
US10642663B2 (en) * | 2014-09-10 | 2020-05-05 | Oracle International Corporation | Coordinated garbage collection in distributed systems |
CN104461382B (zh) * | 2014-11-26 | 2018-06-19 | 华为技术有限公司 | 运行多个文件系统的文件服务器的内部写方法和服务器 |
CN104375949A (zh) * | 2014-12-01 | 2015-02-25 | 恒宝股份有限公司 | 一种智能卡存储空间整理方法及系统 |
CN105260136B (zh) * | 2015-09-24 | 2019-04-05 | 北京百度网讯科技有限公司 | 数据读写方法及分布式存储系统 |
CN105955821B (zh) * | 2016-04-21 | 2020-01-10 | 北京小米移动软件有限公司 | 预读方法及装置 |
US10530823B2 (en) | 2016-08-10 | 2020-01-07 | At&T Intellectual Property I, L.P. | Network stream processing to ensuring a guarantee that each record is accounted for exactly once |
US10936576B2 (en) * | 2017-03-08 | 2021-03-02 | Microsoft Technology Licensing, Llc | Replicating storage tables used to manage cloud-based resources to withstand storage account outage |
US10747566B2 (en) | 2017-11-21 | 2020-08-18 | International Business Machines Corporation | Restarting application servers |
CN110134454B (zh) * | 2018-02-09 | 2022-06-14 | 聚好看科技股份有限公司 | 一种启动应用程序的方法及其装置 |
US11153413B2 (en) * | 2018-10-19 | 2021-10-19 | Arris Enterprises Llc | Distributed state recovery in a system having dynamic reconfiguration of participating nodes |
CN109815162A (zh) * | 2019-01-28 | 2019-05-28 | Oppo广东移动通信有限公司 | 内存管理方法、装置、移动终端及存储介质 |
CN116132201B (zh) * | 2023-04-18 | 2023-09-29 | 云上广济(贵州)信息技术有限公司 | 基于大数据的互联网数据安全监控系统 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6075938A (en) * | 1997-06-10 | 2000-06-13 | The Board Of Trustees Of The Leland Stanford Junior University | Virtual machine monitors for scalable multiprocessors |
GB9825102D0 (en) * | 1998-11-16 | 1999-01-13 | Insignia Solutions Plc | Computer system |
FR2797963B1 (fr) * | 1999-08-23 | 2002-11-29 | Trusted Logic | Protocole de gestion, procede de verification et de transformation d'un fragment de programme telecharge et systemes correspondants |
US7614045B2 (en) * | 2004-09-24 | 2009-11-03 | Sap (Ag) | Sharing classes and class loaders |
US7487307B2 (en) | 2006-01-05 | 2009-02-03 | International Business Machines Corporation | Method, apparatus and program product for managing memory in a virtual computing system |
US9495356B2 (en) * | 2006-03-30 | 2016-11-15 | International Business Machines Corporation | Automated interactive visual mapping utility and method for validation and storage of XML data |
US7925624B2 (en) * | 2006-03-31 | 2011-04-12 | Amazon Technologies, Inc. | System and method for providing high availability data |
JP4961949B2 (ja) * | 2006-10-30 | 2012-06-27 | 富士通株式会社 | 生成プログラム、検査プログラム、生成装置、および生成方法 |
CN101206582B (zh) * | 2006-12-22 | 2010-10-06 | 联想(北京)有限公司 | 一种虚拟机系统及其处理方法 |
-
2010
- 2010-11-30 CN CN201010577046.1A patent/CN102479155B/zh active Active
-
2011
- 2011-10-26 US US13/281,757 patent/US8578379B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN102479155A (zh) | 2012-05-30 |
US20120137290A1 (en) | 2012-05-31 |
US8578379B2 (en) | 2013-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102479155B (zh) | 用于网络应用服务器系统的内存过载管理的方法和系统 | |
CN107885594B (zh) | 分布式资源调度方法、调度节点及接入节点 | |
CN106375420B (zh) | 一种基于负载均衡的服务器集群智能监控系统及方法 | |
EP3335120B1 (en) | Method and system for resource scheduling | |
CN108205541B (zh) | 分布式网络爬虫任务的调度方法及装置 | |
CN109246229A (zh) | 一种分发资源获取请求的方法和装置 | |
CN102143075B (zh) | 实现负载均衡的方法和系统 | |
CN111625527A (zh) | 乱序数据处理方法、装置、设备及可读存储介质 | |
CN110519121B (zh) | 一种分区域任务探测的方法及装置 | |
US20150079966A1 (en) | Methods for facilitating telecommunication network administration and devices thereof | |
CN104270466B (zh) | 数据上报方法及相关设备 | |
WO2015090044A1 (zh) | 一种数据扫描的方法及装置 | |
JP2007328413A (ja) | 負荷分散方法 | |
CN106375372B (zh) | 一种大数据资源分配方法和装置 | |
CN112395077A (zh) | 资源控制方法、装置及系统 | |
KR101968575B1 (ko) | 실시간 병목 자동 분석 방법 및 이러한 방법을 수행하는 장치 | |
JP2004348192A (ja) | Job分配制御方法 | |
CN104580498B (zh) | 一种自适应云管理平台 | |
US11271839B2 (en) | Dynamic asynchronous communication management | |
JP2010170168A (ja) | 流量制御方法およびシステム | |
CN106708656B (zh) | 用户操作的恢复方法和装置 | |
EP1197858B1 (en) | Method and device for offering resources in an internet appliance | |
US9875279B2 (en) | Data scanning method and apparatus | |
JP5364932B2 (ja) | タイムアウト監視システム及びタイムアウト監視プログラム | |
CN110990147B (zh) | 用于处理任务的方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |