发明内容
有鉴于此,本发明提供一种自动监测服务器状态并自适应调整服务的方法及其装置以解决上述问题。
本发明提供一种自动监测服务器状态并自适应调整服务的方法,其特征在于,包括:
预先确定服务的多种服务等级;
利用至少一个探针监测所述服务器状态用以得到至少一个探针值,组合所述至少一个探针值,用以计算所述服务器的当前服务负载值;
依据所述当前服务负载值确定所述服务器当前应采取的服务等级;以及
依据所述确定的服务等级调整所述服务器的服务操作。
优选地,其中,依据服务负载预先确定所述多种服务等级,其中,所述服务负载为所述服务器的资源消耗量。
优选地,其中,所述服务为查询服务、下载服务、在线播放服务、信息推送服务。
优选地,其中,所述服务为信息推送服务时,所述信息推送服务可读取个性化数据、读取最近访问记录、读取索引信息、综合计算。
优选地,其中,所述多个探针包括探针1、探针2、探针3、探针4、探针5及其组合,其中,所述探针1用以监测服务线程数,所述探针2用以监测平均响应时间,所述探针3用以监测处理器使用率,所述探针4用以监测内存回收频率,所述探针5用以监测后台读写次数。
优选地,其中,所述利用至少一个探针监测所述服务器状态用以得到至少一个探针值,组合所述至少一个探针值,用以计算所述服务器的当前服务负载值的步骤包括:
利用预定公式组合所述至少一个探针值来计算所述服务器的当前服务负载值。
优选地,其中,所述预定公式为:
当前服务负载=log(p1*h1+p2*h2+p3*h3+…pn*hn)/log(2) ,其中,pn表示第n个探针值,h1~hn分别为探针值p1~pn的加权系数,n为大于等于1的正整数。
优选地,其中,所述利用至少一个探针监测所述服务器状态用以得到至少一个探针值,组合所述至少一个探针值,用以计算所述服务器的当前服务负载值的步骤包括:
依据探针值的不同,可将所述多个探针对应的负载预先分为多个负载等级,每个负载等级预先对应所述至少一个探针值的一个区间;
组合所述多个负载等级;以及
依据组合后的负载等级计算所述服务器的当前服务负载值。
优选地,其中,所述依据所述当前服务负载值确定所述服务器当前应采取的服务等级的步骤包括:
预先设定所述服务负载值所对应的服务等级,其中不同的服务负载值区间对应不同的服务等级,依据所述的当前服务负载值确定所述服务器当前应采取的服务等级。
本发明还提供了一种自动监测服务器状态并自适应调整服务的装置,其特征在于,包括:
多个探针,用以监测所述服务器状态以得到至少一个探针值;
计算模块,耦接所述多个探针,用以定期读取所述至少一个探针值,利用所读取的探针值计算所述服务器的当前服务负载值;
确定模块,耦接所述计算模块,用以依据所述当前服务负载值确定所述服务器当前应采取的服务等级;以及
执行模块,耦接所述确定模块和服务器,用以依据所述确定的服务等级调整所述服务器的服务操作。
本发明提出的自动监测服务器状态并自适应调整服务的方法及其装置,具有以下优点:
1)无需人工干预的情况下,自动判定服务器当前的服务负载 ;
2)当服务的请求量突然爆发时,可自适应地进行服务等级调整以降低服务负载,从而保障了服务的正常运行;
3)而当服务的请求量恢复正常之后,又可自适应地进行服务等级调整以自动恢复正常服务。
当然,实施本发明的任一产品必不一定需要同时达到以上所述的所有技术效果。
具体实施方式
如在说明书及权利要求当中使用了某些词汇来指称特定组件。本领域技术人员应可理解,硬件制造商可能会用不同名词来称呼同一个组件。本说明书及权利要求并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。如在通篇说明书及权利要求当中所提及的“包含”为一开放式用语,故应解释成“包含但不限定于”。说明书后续描述为实施本发明的较佳实施方式,然所述描述乃以说明本发明的一般原则为目的,并非用以限定本发明的范围。本发明的保护范围当视所附权利要求所界定者为准。
图1为依据本发明一实施例的自动监测服务器状态并自适应调整服务的方法,该方法可以实现于服务提供商的服务器终端。需要说明的是,本发明并不限于服务的种类,例如,可以是查询服务、下载服务、在线播放服务、信息推送服务等。另外,本发明也并不限于服务器终端的具体形式和具体功能,例如当服务是查询服务时,服务器终端可以是远程的查询服务器;当服务是在线播放服务时,服务器可以是本地的播放服务器;当服务是下载服务时,服务器可以是远程的下载服务器;当服务是信息推送服务时,服务器可以是本地的信息推送服务器。如图1所示,自动监测服务健康状态并自适应调整服务的方法包括以下步骤。
步骤101,依据服务负载预先确定服务的多种服务等级。
以信息推送服务提供商提供的信息推送服务为例,该信息推送服务的计算需要读取个性化数据、读取最近访问记录、读取索引信息(当前上下文)、综合计算等。依据信息推送服务所对应的服务器的服务负载可预先将该信息推送服务分为若干种服务等级。在本发明的一实施例中,综合计算是指将多个计算子结果进行组合,其中组合的方法可以是多种,然后依据组合操作得到最终结果。
在本发明的一实施例中,服务负载可为服务器的资源消耗量,可依据资源消耗量来确定该服务等级。例如,依据信息推送服务的内容以及各内容对应的资源消耗量,可预先将信息推送服务按照资源消耗量从高到低的分为多种服务等级。需要说明的是,本发明并不限定服务等级的数量,本领域技术人员可依据设计需求灵活设定。例如,按照读取个性化数据、读取最近访问记录、读取索引信息(当前上下文)、综合计算这四种服务内容以及其分别对应的资源消耗量,将信息推送服务按照资源消耗量从高到低分为四种服务等级,分别为等级1、等级2、等级3和等级4,这四种服务等级的定义如下:
等级1:正常服务流程(读取个性化数据(长期兴趣)、读取最近访问记录(短期兴趣)、读取索引信息(当前上下文)和综合计算);
等级2: 不关注短期兴趣(读取个性化数据(长期兴趣)、读取索引信息(当前上下文)和综合计算);
等级3: 无个性化数据(读取索引信息(当前上下文)和综合计算);
等级4: 热点填充(填充热点数据)。
从上述定义中可见,等级数越大,其消耗的资源量越少,则其对应的服务质量越低(例如不关注短期兴趣则信息推送的准确度会降低、不考虑个性化数据则信息推送的准确度会进一步降低)。需要说明的是,在本实施例中,等级数越高服务质量越低,但并不以此为限,也可设置为等级数越低服务质量越低。
步骤102,利用至少一个探针监测服务器的状态用以得到至少一个探针值,组合该至少一个探针值,用以计算服务器的当前服务负载值。
在本发明的一个实施例中,使用以下探针:探针1,用以监测服务线程数;探针2,用以监测平均响应时间;探针3,用以监测处理器使用率;探针4,用以监测内存回收频率;探针5,用以监测后台(数据库,缓存)读写次数等。需要说明的是,本发明并不限制探针的具体数目,可对多个探针进行自由组合使用,推荐使用5种以上的探针。通过上述探针,可以监测到服务器的状态,并得到相应的探针值(表示对应服务的负载)。在本发明的一实施例中,定期自动读取上述探针值,例如每隔几秒钟(例如2秒)就读取探针值1次。读取探针值之后,对探针值进行组合,用以计算服务器的当前服务负载值。在本发明的一个实施例中,可利用预定公式组合各探针值来计算服务器的当前服务负载值。
在本发明的一实施例中,该预定公式为如下的公式(1)
当前服务负载值=log(p1*h1+p2*h2+p3*h3+…pn*hn)/log(2) 公式(1)
其中,n为大于等于1的正整数,pn表示第n个探针值,h1~hn分别为探针值p1~pn的加权系数。对于公式(1)的计算采用向下取整的方式。需说明的是,探针值的数目n可依据设计需求而灵活改变、各探针值的加权系数可依据设计需求而灵活改变,公式1的具体计算方法也可依设计需求灵活改变,例如可将log运算换算为取最大值(max)运算,公式(1)仅是举例。
举例来说,在本发明的一实施例中,采用上述5个探针中的探针1、探针2和探针5来判断服务器的当前服务负载值,其中探针1的探针值为p1、探针2的探针值为p2、探针5的探针值为p3,公式(1)变为公式(2)
当前服务负载值=log(p1*0.3+p2*0.4+p3*0.4)/log(2) 公式(2)
依据各探针值和预先设定的探针系数,可利用公式(1)计算服务器的当前服务负载值。
在本发明的另一实施例中,依据探针值的不同,可将探针对应的负载预先分为多个等级,每个等级预先对应探针值的一个区间,对于不同的探针,这个区间的具体数值可以相同也可以不同。在优选实施例中,对于不同的探针设定不同的区间数值。在本实施例中,以10个负载等级为例,可预设如下表1。
表1
探针1:服务线程数 |
探针2:平均响应时间(ms) |
探针3:每秒数据库读写次数(QPS) |
负载等级 |
0<=P1<2 |
0<=p2<5 |
0<=p3<3 |
1 |
2<=p1<5 |
5<=p2<10 |
3<=p3<6 |
2 |
5<=p1<10 |
10<=p2<20 |
6<=p3<12 |
3 |
10<=p1<20 |
20<=p2<50 |
12<=p3<25 |
4 |
20<=p1<50 |
50<=p2<100 |
25<=p3<50 |
5 |
50<=p1<100 |
100<=p2<200 |
50<=p3<100 |
6 |
100<=p1<200 |
200<=p2<500 |
100<=p3<200 |
7 |
200<=p1<500 |
500<=p2<1000 |
200<=p3<500 |
8 |
500<=p1<1000 |
1000<=p2<2000 |
500<=p3<1000 |
9 |
1000<=p1 |
2000<p2 |
1000<=p3 |
10 |
从表1可知,探针1的探针值P1大于等于0且小于2时,探针1对应的负载“服务线程数”位于“服务线程数”负载等级1;探针2的探针值P2大于等于5且小于10时,探针2对应的负载“平均响应时间”位于“平均响应时间”负载等级2;探针5的探针值P3大于等于6且小于12时,探针5对应的负载“每秒数据库读写次数”位于“每秒数据库读写次数”负载等级3。在本发明的一实施例中,当得到的探针值分别为:P1=15、P2=15、P3=40时,依据表1可知,“服务线程数”负载为等级4、“平均响应时间”负载为等级3、“每秒数据库读写次数”负载为等级5。此时,组合探针值转化为组合负载等级,组合方式可以为取获取的负载等级的最大值、取获取的负载等级的平均值、取获取的负载等级的中间值等等。在本发明的一实施例中,如P1=15(对应负载等级4)、p2=15(对应负载等级3)、p3=40(对应负载等级5),则取这三个负载等级的最大值5,并判断服务器的当前服务负载值为等级5。
步骤103、依据计算得到的当前服务负载值确定服务器当前应采取的服务等级。
在本发明的一实施例中,可预先设定服务负载值所对应的服务等级。不同的服务负载值区间对应不同的服务等级。例如,可预先设定对照表,如下表2所示。
表2
服务负载值 |
服务等级 |
0<=P<2 |
等级1 |
2<=P<5 |
等级2 |
5<=P<8 |
等级3 |
10<=P |
等级4 |
当依据公式(1)计算的服务器的服务负载值为4时,表示服务器当前应采取服务等级2,以信息推送服务为例,等级2表示不关注短期兴趣(读取个性化数据(长期兴趣)、读取索引信息(当前上下文)和综合计算)。
在本发明的一实施例中,可预先设定服务负载值等级所对应的服务等级。不同的服务负载值等级区间对应不同的服务等级。例如,可预先设定对照表,如下表3所示。
表3
服务负载值等级 |
服务等级 |
0<=服务负载值等级<2 |
等级1 |
2<=服务负载值等级<4 |
等级2 |
4<=服务负载值等级<6 |
等级3 |
6<=服务负载值等级 |
等级4 |
当依据表1计算的服务器的服务负载值登记为5时,表示服务器当前应采取服务等级3,以信息推送服务为例,等级3表示无个性化数据(读取索引信息(当前上下文)和综合计算)。
步骤104、依据确定的服务等级调整服务器的服务操作。
当确定服务器当前的服务等级应调整时(例如调高或调低),可依据确定的服务等级控制服务器的相应操作。例如,服务器当前应采取服务等级2时,调整服务器不关注短期兴趣,而只进行读取个性化数据(长期兴趣)、读取索引信息(当前上下文)和综合计算这三种操作。
图2为依据本发明一实施例的自动监测服务器状态并自适应调整服务的装置200。需要说明的是,本发明并不限于服务的种类,例如,可以是查询服务、下载服务、在线播放服务、信息推送服务等。另外,本发明也并不限于服务器终端的具体形式和具体功能,例如当服务是查询服务时,服务器终端可以是远程的查询服务器;当服务是在线播放服务时,服务器可以是本地的播放服务器;当服务是下载服务时,服务器可以是远程的下载服务器;当服务是信息推送服务时,服务器可以是本地的信息推送服务器。如图2所示,装置200包括多个探针201、计算模块202、确定模块203和执行模块204。
多个探针201监测服务器的状态用以得到至少一个探针值。计算模块202耦接多个探针201,定期(例如每2秒)读取探针值,利用所读取的探针值计算服务器的当前服务负载值。确定模块203耦接计算模块202,依据计算得到的服务器的当前服务负载确定当前应采取的服务等级。执行模块204耦接确定模块203和服务器,用以依据确定的服务等级调整服务器的操作。
需说明的是,本发明并不限制服务器的物理位置,该服务器可位于装置200之内或之外,装置200也可位于服务器之中。关于探针201、计算模块202、确定模块203和执行模块204的具体操作细节请参考图1有关的描述,为简洁,在此不再赘述。
利用本发明的自动监测服务器状态并自适应调整服务的方法及其装置,可在无需人工干预的情况下,自动判定服务器当前的服务负载。当服务的请求量突然爆发时,可自适应地进行服务等级调整以降低服务负载,从而保障了服务的正常运行。而当服务的请求量恢复正常之后,又可自适应地进行服务等级调整以自动恢复正常服务。且该方法对正常业务不会有任何不良影响。该机制运行时,只需要一段时间(通常几秒)收集一次探针值,并进行简单的计算判定,因此对服务器整体的额外负载影响可以忽略不计。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者系统中还存在另外的相同要素。
本领域技术人员应明白,本发明的实施例可提供为方法、系统或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本发明的实施例而已,并不用于限制本发明。对于本领域技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。