專利名稱:一種企業(yè)應(yīng)用系統(tǒng)可用性的計算方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種企業(yè)應(yīng)用系統(tǒng)可用性的計算方法,具體地說是一種涉及IT運維 管理領(lǐng)域,適用于J2EE架構(gòu)的企業(yè)級運行監(jiān)控系統(tǒng)的一種企業(yè)應(yīng)用系統(tǒng)可用性的計算方法。
背景技術(shù):
在計算機(jī)系統(tǒng)日益發(fā)展的今天,企業(yè)中應(yīng)用系統(tǒng)的穩(wěn)定性越來越重要,已經(jīng)跟日 常的生產(chǎn)經(jīng)營息息相關(guān)了,很難想象關(guān)鍵業(yè)務(wù)的中斷會對企業(yè)造成多么大的損失;今天的 應(yīng)用程序不僅僅是做更多的工作,而且有更多的用戶,他們經(jīng)常是遍布全球的,并需要24/7 的可用性。對IT企業(yè)來說一個共同的困難是,當(dāng)實現(xiàn)其他的服務(wù)級需求(比如吞吐量和響 應(yīng)時間)并高效利用服務(wù)器資源時如何經(jīng)受住企業(yè)中已計劃的和未計劃的中斷??捎眯允?一個可達(dá)到的服務(wù)水平特性,衡量服務(wù)器的可用性是保證服務(wù)級別的關(guān)鍵指標(biāo)。下面給出 可用性定義的分級
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種企業(yè)應(yīng)用系統(tǒng)可用性的計算方法。本發(fā)明的目的是按以下方式實現(xiàn)的,通過對企業(yè)內(nèi)組成應(yīng)用系統(tǒng)的各個組件的可 用性級別進(jìn)行計算,最后通過應(yīng)用系統(tǒng)總可用性計算公式計算應(yīng)用系統(tǒng)總的可用性,為提 升企業(yè)服務(wù)水平提供改善依據(jù),其具體步驟如下1)通過主機(jī)服務(wù)器的系統(tǒng)函數(shù)接口獲取主機(jī)的uptime信息,并記錄downtime數(shù) 據(jù),運用公式uptime/(uptime+downtime)來計算主機(jī)服務(wù)器組件的可用性;2)通過JMX的管理API接口來自定義MBean獲取中間件組件的uptime數(shù)據(jù),并 記錄downtime數(shù)據(jù),運用公式uptime/(uptime+downtime)來計算主機(jī)服務(wù)器組件的可用 性;3)通過數(shù)據(jù)庫服務(wù)器的管理視圖獲取數(shù)據(jù)庫組件的uptime數(shù)據(jù),并記錄 downtime數(shù)據(jù),運用公式uptime/(uptime+downtime)來計算主機(jī)服務(wù)器組件的可用性;4)通過上面組件計算單個組件的可用性,運用AvailabilityTOTAL = AvaiIabiIity操作系統(tǒng)XAvailability中間件X Avai IabiIity數(shù)據(jù)庫公式計算總的應(yīng)用 系統(tǒng)的可用性。5)通過獲取和實時記錄各個組件的一些時間信息來計算各個組件的可用性的方 法;6)通過計算組成應(yīng)用系統(tǒng)各個組件的可用性,并利用公式AvailabilityTOTAL = Availability操作系統(tǒng)XAvailability中間件XAvailability數(shù)據(jù)庫計算企業(yè)應(yīng)用系統(tǒng) 的可用性。本發(fā)明的有益效果是1)本發(fā)明提供一種企業(yè)內(nèi)應(yīng)用系統(tǒng)主機(jī)服務(wù)器組件的可用性計算方法,通過該方法能夠直觀的統(tǒng)計出主機(jī)服務(wù)器的可靠性和可維護(hù)性,為改進(jìn)企業(yè)內(nèi)部系統(tǒng)運維服務(wù)級別 提供依據(jù)。2)本發(fā)明提供一種企業(yè)內(nèi)應(yīng)用系統(tǒng)數(shù)據(jù)庫服務(wù)器組件的可用性計算方法,通過該 方法能夠直觀的統(tǒng)計出數(shù)據(jù)庫服務(wù)器的可靠性和可維護(hù)性,為改進(jìn)企業(yè)內(nèi)部系統(tǒng)運維服務(wù) 級別提供依據(jù)。3)本發(fā)明提供一種企業(yè)內(nèi)應(yīng)用系統(tǒng)中間件服務(wù)器組件的可用性計算方法,通過該 方法能夠直觀的統(tǒng)計出中間件服務(wù)器的可靠性和可維護(hù)性,為改進(jìn)企業(yè)內(nèi)部系統(tǒng)運維服務(wù) 級別提供依據(jù)。4)通過本發(fā)明所提供的單個組件的可用性計算方法可以計算整個業(yè)務(wù)應(yīng)用系統(tǒng) 的可用性。通過該方法能夠直觀的統(tǒng)計出業(yè)務(wù)應(yīng)用系統(tǒng)的可靠性和可維護(hù)性,為改進(jìn)企業(yè) 內(nèi)部系統(tǒng)運維服務(wù)級別提供依據(jù)。
具體實施例方式首先我們借助下
圖1看一下一個典型J2EE模式的應(yīng)用系統(tǒng)由那幾部分組成從上圖可以看出關(guān)鍵組件主要有中間件(WebSphere Application Server)和數(shù) 據(jù)庫(DB2)另外還包括服務(wù)器主機(jī)(AIX,一種UNIX操作系統(tǒng)),對于這個應(yīng)用系統(tǒng)可用性 可以用下面計算公式計算AvailabilityTOTAL = Availability 操作系統(tǒng) XAvailability 中間 件 XAvailability 數(shù)據(jù)庫要計算應(yīng)用系統(tǒng)總的可用性,那我們需要進(jìn)行單個組件的可用性計算,“可用性” 告訴您一個組件“運行(up)”相比較“停止(down)”的時間的百分比。在一個簡單的層次 上,它由兩部分組成首先,一個組件多少時間失效一次(MTTF) ?其次,當(dāng)它失效時,多長 時間它能恢復(fù)(MTTR) ?只要我們獲取到MTTF和MTTR值,就能計算出各個組件的可用性 了。MTTF和MTTR的計算公式MTTF = (T1+T2+··· Τη)/n (公式中Ti——第i次失效前時 間;η——故障次數(shù));MTTR = (Tl+T2+...Tn)/n(公式中Ti——第i次修復(fù)時間;η——修 復(fù)次數(shù))。首先看一下UNIX操作系統(tǒng)的獲取方法,在AIX操作系統(tǒng)提供了一個uptime命 令,顯示系統(tǒng)當(dāng)前事件、系統(tǒng)正常運行的時間長度、聯(lián)機(jī)用戶的數(shù)目和平均負(fù)載、負(fù)載平均 值以1分鐘、5分鐘、15分鐘時間間隔開頭的可運行的進(jìn)程#uptime05:05下午運行1天, 7:38,1個用戶,裝入平均值0. 01,0. 04,0. 05現(xiàn)在需要考慮怎么集成到應(yīng)用中,通過程序 去獲取這個信息,通過查找操作系統(tǒng)提供的系統(tǒng)調(diào)用函數(shù),在librpcsvc. a類庫中提供了 一個rstat(host,statp)函數(shù),具體實用方法如下#include<stdio. h>#include<stdlib. h>#include<rpcsvc/rstat. h>int main(int argc, char氺argv[]) {struct statstime statstime ;int retcode = rstat(〃 inspurl" , &statstime);if( ! rstat (" inspurl 〃,&statstime)) {;printf(" retcode:% d\n" , retcode);
printf(“ boottime:% u" , statstime. boottime. tv_sec);printf(“ curtime:% u" , statstime. curtime. tv_sec);}else{printf (" error ! ! \n〃 );}return 0 ;}通過curtime和boottime相減獲取的值就是上面說的uptime值,而只要定
時檢查系統(tǒng)的boottime時間,如果發(fā)現(xiàn)boottime無法獲取,就記錄下停機(jī)時間,等 再次獲取到新的boottime之后就計算中間修復(fù)故障的時間,這樣通過計算uptime/ (uptime+downtime) X 100%就是操作系統(tǒng)的可用性。例子UNIX硬件往往在幾年的時間失效一次(例如,電力供應(yīng)中斷),讓我們假定 3年。很多UNIX操作者和他們的供應(yīng)商有一個支持協(xié)議以保證在24小時內(nèi)更換或進(jìn)行維 修。因此,一個典型的UNIX服務(wù)器的可用性為3年/(3年+24小時)*100%= 99.91%。再看一下中間件的情況,中間件核心組件是JDK,JMX提供一些API接口來獲取實 時監(jiān)控數(shù)據(jù),下面是通過MBean來獲取uptime的方法package standardbeans ;public class ServerMonitor implements ServerMonitorMBean{private final ServerImpl target ;public ServerMonitor(Serverlmpl target){this, target = target ;}public long getUpTime () {return System. currentTimeMi11 is()-target. startTime ;}}下面我們就看一個模擬管理系統(tǒng)的例子package standardbeans ;import javax. management. MBeanServer ;import javax. management. MBeanServerFactory ;import javax. management. ObjectName ;public class Main{private static ObjectName objectName ;private static MBeanServer mBeanServer ;public static void main(String[]args)throws Exception{init();manage ();
}private static void init ()throws Exception{ServerImpl serverlmpl = new ServerImpl();ServerMonitorserverMonitor =newServerMonitor(serverlmpl);mBeanServer = MBeanServerFactory. createMBeanServer();objectName=newObjectName(〃 objectName:id = ServerMonitorl〃 );mBeanServer. registerMBean(serverMonitor, objectName);}private static void manage()throws Exception{Long upTime = (Long)mBeanServer. getAttribute(objectName,“ upTime");System, out. println (upTime);}}定時檢查startTime值如果發(fā)現(xiàn)無法獲取,講記錄停機(jī)時間,等再次獲取計算修
復(fù)時間,通過uptime/(uptime+downtime) X 100%計算中間件可用性。例子系統(tǒng)中的中間件在一段時間內(nèi)發(fā)生了兩次故障,第一次運行4個小時,花了 10分鐘重新運行,第二次運行20個小時,花了 4分鐘重新運行,統(tǒng)計主機(jī)的可用性MTTF =(4+20)/2 = 12 小時,MTTR= (10+4)/2 = 7 分鐘;可用性=12*60/(12*60+7)*100% = 99. 04%。數(shù)據(jù)庫主要是根據(jù)實例啟動時間來計算,在管理視圖SYSIBMADM. SNAPDBM中 DB2提供了一個db2Start_time的監(jiān)控元素,通過下面查詢方式可以實時獲取=SELECT DB2START_TIME,SNAPSH0T_TIMESTAMP FROM SYSIBMADM. SNAPDBM通過SNAPSH0T_TIMESTAMP 和DB2START_TIME的差值就可以計算出uptime,通過實時檢查記錄停機(jī)時間,然后通過 叩^1^/(叩^1!^+(10^1^1^)\100%就可以計算出數(shù)據(jù)庫的可用性。現(xiàn)在來看一下應(yīng)用 系統(tǒng)的可用性例子某企業(yè)應(yīng)用系統(tǒng),有一臺UNIX服務(wù)器,上面運行企業(yè)應(yīng)用系統(tǒng)實用的 中間件以及數(shù)據(jù)庫,他們的可用性分別是UNIX服務(wù)器99. 99%,中間件99. 10%,數(shù)據(jù)庫 99. 38% ;整個應(yīng)用系統(tǒng)的可用性為99. 99% *99. 10% *99. 38%= 98. 48%。
權(quán)利要求
一種企業(yè)應(yīng)用系統(tǒng)可用性的計算方法,其特征在于,對企業(yè)內(nèi)組成應(yīng)用系統(tǒng)的各個組件的可用性級別進(jìn)行計算,最后通過應(yīng)用系統(tǒng)總可用性計算公式計算應(yīng)用系統(tǒng)總的可用性,為提升企業(yè)服務(wù)水平提供改善依據(jù),其具體步驟如下1)通過主機(jī)服務(wù)器的系統(tǒng)函數(shù)接口獲取主機(jī)的uptime信息,并記錄downtime數(shù)據(jù),運用公式uptime/(uptime+downtime)來計算主機(jī)服務(wù)器組件的可用性;2)通過JMX的管理API接口來自定義MBean獲取中間件組件的uptime數(shù)據(jù),并記錄downtime數(shù)據(jù),運用公式uptime/(uptime+downtime)來計算主機(jī)服務(wù)器組件的可用性;3)通過數(shù)據(jù)庫服務(wù)器的管理視圖獲取數(shù)據(jù)庫組件的uptime數(shù)據(jù),并記錄downtime數(shù)據(jù),運用公式uptime/(uptime+downtime)來計算主機(jī)服務(wù)器組件的可用性;4)通過上面組件計算單個組件的可用性,運用AvailabilityTOTAL=Availability操作系統(tǒng)×Availability中間件×Availability數(shù)據(jù)庫公式計算總的應(yīng)用系統(tǒng)的可用性。5)通過獲取和實時記錄各個組件的一些時間信息來計算各個組件的可用性的方法;6)通過計算組成應(yīng)用系統(tǒng)各個組件的可用性,并利用公式AvailabilityTOTAL=Availability操作系統(tǒng)×Availability中間件×Availability數(shù)據(jù)庫計算企業(yè)應(yīng)用系統(tǒng)的可用性。
全文摘要
本發(fā)明提供一種企業(yè)應(yīng)用系統(tǒng)可用性的計算方法,在計算機(jī)系統(tǒng)方面,服務(wù)器的可用性定義為MTTF/(MTTF+MTTR)*100%,即系統(tǒng)保持正常運行時間的百分比。服務(wù)器的可靠性用平均無故障時間(MTTF)來度量,即計算機(jī)系統(tǒng)平均能夠正常運行多長時間,才發(fā)生一次故障;服務(wù)器的可靠性越高,平均無故障時間越長。可維護(hù)性用平均維修時間(MTTR)來度量,即系統(tǒng)發(fā)生故障后維修和重新恢復(fù)正常運行平均花費的時間;系統(tǒng)的可維護(hù)性越好,平均維修時間越短。本發(fā)明提供了一種企業(yè)應(yīng)用系統(tǒng)可用性的計算方法。
文檔編號G06Q10/00GK101923670SQ20091022999
公開日2010年12月22日 申請日期2010年3月19日 優(yōu)先權(quán)日2010年3月19日
發(fā)明者宋智強(qiáng) 申請人:山東浪潮齊魯軟件產(chǎn)業(yè)股份有限公司