崔 霞,袁佳琳,高建華
(1.華東師范大學(xué)軟件學(xué)院,上海200062;2.上海師范大學(xué)信息與機(jī)電工程學(xué)院,上海200234)
計(jì)算機(jī)技術(shù)已全面滲透到社會(huì)活動(dòng)的各個(gè)領(lǐng)域,不同領(lǐng)域相互之間的交叉,衍生出了Web應(yīng)用,它為大規(guī)模的用戶群提供了跨平臺(tái)訪問(wèn)互聯(lián)網(wǎng)資源的各種途徑.Web應(yīng)用系統(tǒng)已經(jīng)完成由“胖客戶端”模式向“瘦客戶端”模式轉(zhuǎn)變,目前更多的信息系統(tǒng)使用WWW承載B/S結(jié)構(gòu)[1].人們對(duì)Web應(yīng)用的依賴度日益增強(qiáng),確保其可靠性變得愈加重要.
傳統(tǒng)軟件的可靠性度量方法都是基于軟件內(nèi)部故障.而Web應(yīng)用是由一系列Web頁(yè)面及部件構(gòu)成的復(fù)雜的、多層次的、異構(gòu)的系統(tǒng).它的執(zhí)行需要瀏覽器、網(wǎng)絡(luò)、Web服務(wù)器、應(yīng)用服務(wù)器、數(shù)據(jù)庫(kù)服務(wù)器等共同協(xié)調(diào)[2].這些特點(diǎn)導(dǎo)致Web失效因素的多樣性,不僅包含軟件內(nèi)部故障,更包含用戶使用、網(wǎng)絡(luò)環(huán)境等諸多因素;而且一種失效現(xiàn)象可由多種可能原因?qū)е拢?/p>
文獻(xiàn)[3]針對(duì)Web應(yīng)用可靠性評(píng)估,首次提出基于Apache日志的工作量提取方法,著重探討了分別使用點(diǎn)擊數(shù)、下載字節(jié)數(shù)、用戶數(shù)以及用戶會(huì)話數(shù)作為工作量指標(biāo),度量Web軟件可靠性的可行性.上述方法雖然避免了以時(shí)間作為可靠性模型輸入所帶來(lái)的巨大誤差,但是其強(qiáng)調(diào)的Web應(yīng)用失效重點(diǎn)僅在于源內(nèi)容的失效,而忽略了由于網(wǎng)絡(luò)環(huán)境故障等因素所產(chǎn)生的影響.
本文作者從軟件系統(tǒng)角度探討基于日志的Web應(yīng)用可靠性評(píng)估的可行性,包括失效類(lèi)型及原因分析、基于IIS日志的數(shù)據(jù)收集,以及新型的工作量計(jì)算方法.將新的工作量指標(biāo)代入Nelson模型,評(píng)估Web應(yīng)用的可靠性,并衡量可靠性度量的精度.
章節(jié)安排如下:第1節(jié)是Web應(yīng)用的可靠性,主要描述Web應(yīng)用失效定義以及失效形式.第2節(jié)是基于IIS日志的數(shù)據(jù)收集,描述IIS訪問(wèn)日志和錯(cuò)誤日志的采集過(guò)程和與工作量相關(guān)數(shù)據(jù)處理過(guò)程.第3節(jié)是核心部分,新型工作量計(jì)算方法.描述所提出的新型工作量的計(jì)算方法.第4節(jié)是實(shí)驗(yàn)分析,根據(jù)所采集的日志數(shù)據(jù),對(duì)新型工作量的準(zhǔn)確性根據(jù)RSE值進(jìn)行評(píng)價(jià).第5節(jié)是結(jié)語(yǔ).
將Web應(yīng)用失效定義為在用戶正確操作下,無(wú)法完成文檔、多媒體以及應(yīng)用計(jì)算結(jié)果等信息傳送的事件.導(dǎo)致Web信息傳送失敗的原因主要有以下3個(gè)方面:1)用戶操作錯(cuò)誤;2)網(wǎng)絡(luò)環(huán)境故障;3)源內(nèi)容失效及網(wǎng)頁(yè)錯(cuò)誤.其中,源內(nèi)容失效通常指服務(wù)器端信息的丟失、傳輸阻礙及程序運(yùn)行失敗;網(wǎng)絡(luò)環(huán)境故障通常指由于客戶端瀏覽器的專有特性,網(wǎng)絡(luò)設(shè)備的運(yùn)行局限等各種因素所導(dǎo)致的不穩(wěn)定、網(wǎng)路阻礙等現(xiàn)象.顯而易見(jiàn),能導(dǎo)致所定義的Web應(yīng)用失效的原因就是上面所提及的2)和3).而1)用戶操作錯(cuò)誤與研究?jī)?nèi)容無(wú)關(guān).
Web應(yīng)用更新頻率較高,訪問(wèn)量波動(dòng)較大等特點(diǎn)促使用戶更關(guān)心信息的正確獲取.軟件可靠性模型是軟件可靠性定量分析的技術(shù)基礎(chǔ).將Web應(yīng)用可靠性定義為避免Web應(yīng)用失效,無(wú)故障完成信息傳送的概率.由于Web應(yīng)用中確切的時(shí)間是很難獲得的,工作量概念的提出避免了可靠性模型的輸入基于CPU運(yùn)行時(shí)間,事務(wù)處理時(shí)間等指標(biāo)的尷尬[3].
Web日志文件詳細(xì)記錄了客戶端和服務(wù)器的交互行為和錯(cuò)誤類(lèi)別.舉例來(lái)說(shuō),如下錯(cuò)誤日志內(nèi)容:2010 -12 -25 02:22:49 111.186.89.52 1226 202.121.48.103 80 - - - - - Timer_ConnectionIdle -,說(shuō)明錯(cuò)誤是于2012年12月25日02:22:49發(fā)生,錯(cuò)誤類(lèi)型為連接超時(shí).由于Web應(yīng)用失效因素錯(cuò)綜復(fù)雜,往往很難區(qū)分失效的具體原因和出錯(cuò)對(duì)象,如何從Web日志中有效提取工作量數(shù)據(jù)和失效數(shù)據(jù)決定著可靠性評(píng)估的成?。?/p>
IIS是目前常用的服務(wù)器之一,IIS訪問(wèn)日志和錯(cuò)誤日志是作者的研究對(duì)象.IIS訪問(wèn)日志主要用于記錄用戶包括搜索引擎蜘蛛對(duì)網(wǎng)站的訪問(wèn)行為,包括客戶端訪問(wèn)時(shí)刻、來(lái)源IP、客戶端請(qǐng)求方式、訪問(wèn)路徑及參數(shù)、協(xié)議狀態(tài)代碼、請(qǐng)求及返回字節(jié)大小等信息.IIS錯(cuò)誤日志主要用于記錄HTTP應(yīng)用程序接口錯(cuò)誤,包括客戶端訪問(wèn)時(shí)刻、來(lái)源IP、謂動(dòng)詞、訪問(wèn)資源、協(xié)議狀態(tài)代碼、錯(cuò)誤原因等信息.
需要注意的是,IIS訪問(wèn)日志與錯(cuò)誤日志是相互獨(dú)立的,在訪問(wèn)日志中出現(xiàn)的錯(cuò)誤信息,錯(cuò)誤日志中并無(wú)記錄與之對(duì)應(yīng).IIS訪問(wèn)日志是服務(wù)器已經(jīng)響應(yīng)客戶端的請(qǐng)求,并已經(jīng)發(fā)生請(qǐng)求和返回信息傳送的記錄;而IIS錯(cuò)誤日志則是由于網(wǎng)絡(luò)環(huán)境故障、服務(wù)器和客戶端錯(cuò)誤等原因?qū)е碌男畔魉椭兄沟挠涗洠?/p>
雖然很難從IIS訪問(wèn)和錯(cuò)誤日志中嚴(yán)格區(qū)分信息傳送失敗的具體原因和出錯(cuò)對(duì)象,但通過(guò)恰當(dāng)?shù)奶幚砜梢暂^為準(zhǔn)確地劃分出所定義的Web應(yīng)用失效次數(shù)和用戶訪問(wèn)的信息.IIS訪問(wèn)日志和錯(cuò)誤日志記錄了Web應(yīng)用系統(tǒng)各個(gè)環(huán)節(jié)軟件的響應(yīng),而與硬件設(shè)備的損壞無(wú)關(guān),這正是從Web應(yīng)用軟件系統(tǒng)角度探討可靠性評(píng)估的著眼點(diǎn).作者通過(guò)C#語(yǔ)言編程實(shí)現(xiàn)了對(duì)IIS日志的數(shù)據(jù)收集.
參照文獻(xiàn)[3]提出的4個(gè)工作量的候選參數(shù),即,點(diǎn)擊數(shù)、傳輸字節(jié)數(shù)、用戶數(shù)、用戶會(huì)話數(shù),在第3節(jié)中對(duì)上述4個(gè)參數(shù)進(jìn)行組合,產(chǎn)生一種新型的工作量的計(jì)算方法.這4個(gè)候選參數(shù)選取如下:
1)點(diǎn)擊數(shù).每次點(diǎn)擊代表了一次客戶端與服務(wù)器的交互.由于IIS記錄訪問(wèn)日志時(shí)以文件引用為一次記錄,使得一次用戶的訪問(wèn)請(qǐng)求記錄了如CSS樣式文件、圖片文件和JS腳本文件的引用等多條記錄.計(jì)算點(diǎn)擊數(shù)時(shí),是指去除了訪問(wèn)請(qǐng)求所附帶的隱性資源、搜索引擎蜘蛛的訪問(wèn),以及協(xié)議狀態(tài)為4xx和5xx的錯(cuò)誤訪問(wèn)記錄后,剩余的訪問(wèn)日志條目總數(shù)即為點(diǎn)擊數(shù),單位“次”.
2)傳輸字節(jié)數(shù).在訪問(wèn)日志中可以獲取一次點(diǎn)擊的字節(jié)傳輸量,包括同一點(diǎn)擊下多次文件引用所產(chǎn)生的客戶端發(fā)送請(qǐng)求和服務(wù)器應(yīng)答的總字節(jié)數(shù),單位“字節(jié)”.文中排除了搜索引擎蜘蛛和錯(cuò)誤訪問(wèn)記錄中的傳輸字節(jié)數(shù)據(jù).
3)用戶數(shù).一個(gè)唯一的IP對(duì)應(yīng)一個(gè)用戶.用戶數(shù)單位是“個(gè)”.文中排除了搜索引擎蜘蛛和錯(cuò)誤訪問(wèn)記錄中的IP數(shù)據(jù).
4)用戶會(huì)話數(shù).在一個(gè)明確的時(shí)間間隔內(nèi),同一個(gè)IP地址上的所有操作被認(rèn)為是一個(gè)會(huì)話,超過(guò)這個(gè)時(shí)間間隔則產(chǎn)生一個(gè)新的會(huì)話,用戶會(huì)話數(shù)的單位是“次”.文中排除了搜索引擎蜘蛛的IP數(shù)據(jù),并忽略了協(xié)議狀態(tài)為4xx和5xx的點(diǎn)擊記錄.
分別從IIS訪問(wèn)日志和錯(cuò)誤日志中提取Web失效數(shù)據(jù).它反映了Web應(yīng)用失效的來(lái)源,體現(xiàn)了Web應(yīng)用系統(tǒng)各個(gè)軟件環(huán)節(jié)信息傳送的基本運(yùn)行狀況.
每一次信息傳送失敗記為一次失效.IIS訪問(wèn)日志中,對(duì)應(yīng)協(xié)議狀態(tài)為4xx或者5xx的每一次點(diǎn)擊記為一次失效;大多數(shù)情況下,IIS錯(cuò)誤日志中,錯(cuò)誤原因“URL”、“Timer_MinBytesPerSecond”、“Timer_ConnectionIdle”、“Client_Reset”和“Connection_Dropped”是由用戶錯(cuò)誤操作或者硬件故障產(chǎn)生.所以IIS錯(cuò)誤日志中排除以上5種錯(cuò)誤原因的每一次點(diǎn)擊記為一次失效.Web應(yīng)用失效數(shù)的單位是“次”.
一般而言,某網(wǎng)站的客戶群體特點(diǎn)大致相同;其客戶的使用特征雖然在不斷地波動(dòng),但也具有一定的規(guī)律性.Web日志中點(diǎn)擊數(shù)、傳輸字節(jié)數(shù)、用戶數(shù)以及用戶會(huì)話數(shù)都存在信息不完整的現(xiàn)象.基于以上分析,采取了以下工作量的計(jì)算方法.
設(shè)某i天的點(diǎn)擊數(shù)、傳輸字節(jié)數(shù)、用戶數(shù)、用戶會(huì)話數(shù)分別為Hi,Bi,Ui,Si.統(tǒng)計(jì)nt天數(shù)的數(shù)據(jù),分別取平均,得:
再進(jìn)行去單位化處理,得:
其中,hi,bi,ui,si分別稱為某i天的點(diǎn)擊權(quán)量、傳輸字節(jié)權(quán)量、用戶權(quán)量、用戶會(huì)話權(quán)量.定義某i天的工作量權(quán)量wi為:
其中,k1、k2、k3、k4的選取采用以下優(yōu)化方法:
由Nelson模型,某i天可靠度的估計(jì)值為:
進(jìn)一步計(jì)算nt天可靠度的標(biāo)準(zhǔn)差,定義為:
則,k1、k2、k3、k4的選取要求達(dá)到 χnt最?。闹羞\(yùn)用 Matlab 軟件的 fmincon 函數(shù)實(shí)現(xiàn)了 k1、k2、k3、k4的優(yōu)化選?。?/p>
為了說(shuō)明可靠度評(píng)估的穩(wěn)定性,引入了RSE參數(shù),定義如下:
顯然,RSE值越小,可靠性評(píng)估越穩(wěn)定,可信性越高.
本章將通過(guò)分析前10d(2011.04.01~2011.04.10)的IIS訪問(wèn)日志和錯(cuò)誤日志數(shù)據(jù),獲取點(diǎn)擊數(shù)、傳輸字節(jié)數(shù)、用戶數(shù)、用戶會(huì)話數(shù)(時(shí)間間隔20 min)以及失效數(shù).利用第3節(jié)提出的優(yōu)化方法,選取k1、k2、k3、k4.再分析后10d(2011.04.11 ~2011.04.20)以及再后 10d(2011.04.21 ~2011.04.30)的 IIS 訪問(wèn)日志和錯(cuò)誤日志數(shù)據(jù),將前面優(yōu)化得到的k1、k2、k3、k4代入式(3),計(jì)算新提出的工作量.分別使用點(diǎn)擊數(shù)和新型工作量,代入Nelson模型(式(4))和RSE參數(shù)(式(6)),計(jì)算可靠度和RSE值.最后,比較兩種工作量計(jì)算可靠度的穩(wěn)定性.
本次實(shí)驗(yàn)使用一個(gè)社區(qū)網(wǎng)絡(luò)運(yùn)行商提供的網(wǎng)絡(luò)業(yè)務(wù)辦理平臺(tái).社區(qū)網(wǎng)絡(luò)用戶可以在該平臺(tái)上申請(qǐng)、辦理、查詢、咨詢、報(bào)修各類(lèi)網(wǎng)絡(luò)業(yè)務(wù).本平臺(tái)的WEB應(yīng)用承載在IIS6.0上,故本次實(shí)驗(yàn)使用IIS6.0自動(dòng)記錄的訪問(wèn)日志和錯(cuò)誤日志.要注意的是,IIS6.0默認(rèn)不記錄每次用戶請(qǐng)求時(shí)服務(wù)器接收和應(yīng)答的字節(jié)數(shù),需要手動(dòng)勾選sc-bytes和cs-bytes兩個(gè)選項(xiàng).
分別選取了2011年4月1日至10日、11日至20日、21日至30日的IIS訪問(wèn)日志和錯(cuò)誤日志作為實(shí)驗(yàn)數(shù)據(jù),從中獲取點(diǎn)擊數(shù)、傳輸字節(jié)數(shù)、用戶數(shù)、用戶會(huì)話數(shù)(時(shí)間間隔20 min)和失效數(shù)進(jìn)行試驗(yàn).前10d的數(shù)據(jù)如表1所示;后10d的數(shù)據(jù)如表2所示;再后10d的數(shù)據(jù)如表3所示.
表1 前10d的收集數(shù)據(jù)
表2 后10d的收集數(shù)據(jù)
表3 再后10d的收集數(shù)據(jù)
通過(guò)前 10d 數(shù)據(jù)的優(yōu)化計(jì)算,得到了系數(shù) k1、k2、k3、k4值分別為0.1220、0.4430、-0.4744、0.9094.采用新型工作量前10d優(yōu)化所得可靠度的RSE值為0.0177;以點(diǎn)擊數(shù)為工作量所得可靠度的RSE值為0.0275.代入上述系數(shù)k1~k4,采用新型工作量計(jì)算后10d可靠度的RSE值為0.0586;若采用點(diǎn)擊數(shù)為工作量,可靠度的RSE值為0.0687.采用新型工作量計(jì)算再后10d可靠度的RSE值為0.0308;若采用點(diǎn)擊數(shù)為工作量,可靠度的RSE值為0.0335.其柱狀圖如圖1所示.
圖1 RSE值比較
由實(shí)驗(yàn)結(jié)果數(shù)據(jù)可見(jiàn),采用點(diǎn)擊數(shù)作為工作量,3組10d的可靠度RSE值分別為0.0275、0.0687和0.0335,都是較差的.而采用新型工作量經(jīng)優(yōu)化后的可靠度RSE值達(dá)到最小,即0.0177;將優(yōu)化后的系數(shù)k1~k4代入后二組10d的數(shù)據(jù),采用新型工作量計(jì)算可靠度的RSE值也分別達(dá)到0.0586和0.0308,都比采用點(diǎn)擊數(shù)為工作量所計(jì)算的RSE值低約10%.采用新型工作量所計(jì)算可靠度RSE值都相對(duì)較小,表明采用新型工作量來(lái)計(jì)算Web應(yīng)用的可靠度穩(wěn)定性較好,可信性較高.
本文作者通過(guò)定義Web應(yīng)用失效為在用戶正確操作下,無(wú)法完成文檔、多媒體以及應(yīng)用計(jì)算結(jié)果等信息傳送的事件,來(lái)研究Web應(yīng)用的可靠性.通過(guò)分析IIS日志數(shù)據(jù),收集相應(yīng)的用戶操作和信息傳送失效數(shù)據(jù).從Web應(yīng)用軟件系統(tǒng)的角度探討了基于日志的Web應(yīng)用可靠性評(píng)估的可行性.
本文作者提出了一種新型工作量計(jì)算方法.該方法首先從以前數(shù)日的日志數(shù)據(jù)中優(yōu)化得到系數(shù)k1~k4,然后代入以后的日志數(shù)據(jù),得到工作量權(quán)量wi和新型工作量.最后通過(guò)實(shí)驗(yàn)驗(yàn)證了新型工作量的有效性.實(shí)驗(yàn)結(jié)果表明,采用新型工作量計(jì)算Web應(yīng)用的可靠性較穩(wěn)定,可信性較高.
[1]LYU M R.Handbook of software reliability engineering[M].New Yourk:McGraw-Hill,1996.
[2]ELBAUM S,ROTHERMEL G,KARRE S,et al.Leveraging user-session data to support web application testing[J].IEEE Transactions on Software Engineering,2005,31(3):187 -201.
[3]TIAN J,RUDRARAJU S,LI Z.Evaluating web software reliability based on workload and failure data extracted from server logs[J].IEEE Transactions on Software Engineering,2004,30(11):754 - 769.
[4]YUAN JL,GAO J H.Measurement method of Web applicaition reliability based on workload and error log[J].Computer applications and software,2012,29(10):44 -47,179.
[5]NELSON E.Estimating software reliability from test data[J].Microelectronics and Reliability,1978,17(1):67 -73.
[6]W3C.Extended log file format[EB/OL].(1996-03-23).[2014-11-20].http://www.w3.org/TR/WD-logfile.html.
[7]HSU CJ,HUANG C Y.Optimal weighted combinational models for software reliability estimation and analysis[J].IEEE Transactions on Reliability,2014,99:1 -19.