文/馮興利 洪丹丹 羅軍鋒 鎖志海
隨著信息化建設(shè)的普及,各高校自主研發(fā)的信息管理系統(tǒng)越來越多,比如OA辦公自動化系統(tǒng),為了鑒別登錄系統(tǒng)的用戶身份,身份認(rèn)證系統(tǒng)不可或缺。統(tǒng)一身份認(rèn)證系統(tǒng)使得用戶可以使用唯一的NetID登錄學(xué)校幾乎所有信息系統(tǒng),避免了多個賬號帶來的混亂,也使得其他應(yīng)用系統(tǒng)對用戶賬號的管理更加便捷。
西安交通大學(xué)統(tǒng)一身份認(rèn)證系統(tǒng)(簡稱CAS)作為學(xué)校其他應(yīng)用系統(tǒng)的統(tǒng)一認(rèn)證入口,面向全部在校師生,主要為應(yīng)用系統(tǒng)提供身份鑒別、用戶信息查詢等服務(wù)。目前,西安交通大學(xué)研究生管理系統(tǒng)、學(xué)生選課系統(tǒng)、本科教務(wù)管理系統(tǒng)等多個系統(tǒng)網(wǎng)站都使用基于統(tǒng)一身份認(rèn)證平臺的單點(diǎn)登錄系統(tǒng)。只需登錄一次就可以訪問校內(nèi)受統(tǒng)一身份認(rèn)證保護(hù)的各項(xiàng)服務(wù),為師生帶來了極大的便利[1]。截至目前,全校共有310個系統(tǒng)接入了統(tǒng)一身份認(rèn)證平臺。
統(tǒng)一身份認(rèn)證系統(tǒng)在給全校師生提供登錄便利的同時,也給自身服務(wù)器帶來了強(qiáng)大的壓力。為此,本文使用Loadrunner 11產(chǎn)生虛擬用戶(Virtual users)來模擬實(shí)際用戶對CAS系統(tǒng)施加壓力,進(jìn)一步尋找系統(tǒng)的優(yōu)化空間[2]。
在Web應(yīng)用程序的開發(fā)中,研發(fā)人員在保證項(xiàng)目如期完成的同時,也在關(guān)注著程序的性能和可靠性。優(yōu)化Web應(yīng)用程序需要參考資源使用情況、瀏覽器兼容性等多項(xiàng)性能指標(biāo)。而在Loadrunner中,衡量Web前端性能通常使用以下三個指標(biāo):
事務(wù)的響應(yīng)時間是執(zhí)行一個操作所需要花費(fèi)的時間,一定程度上反映了服務(wù)器的處理速度。
業(yè)內(nèi)流行的網(wǎng)站響應(yīng)時間評價(jià)標(biāo)準(zhǔn)為:2秒之內(nèi)被認(rèn)為是“非常有吸引力”的用戶體驗(yàn);5秒之內(nèi)被認(rèn)為是“比較不錯”的用戶體驗(yàn);10秒之內(nèi)被認(rèn)為是“糟糕”的用戶體驗(yàn);超過10秒還沒有得到響應(yīng),那么大多數(shù)用戶會認(rèn)為這次請求是失敗的[3]。
每秒點(diǎn)擊次數(shù)是指用戶每秒向Web服務(wù)器提交的HTTP請求的個數(shù),通過該項(xiàng)指標(biāo)可以評估用戶產(chǎn)生的負(fù)載量。
吞吐量代表用戶每秒從服務(wù)器獲得的數(shù)據(jù)量,單位是字節(jié)。根據(jù)服務(wù)器的吞吐量可以評估服務(wù)器在Web流量方面的處理能力[4]。
本次測試準(zhǔn)備9臺虛擬機(jī),其中一臺作為主控機(jī),其他8臺作為負(fù)載機(jī)[5]。主控機(jī)上安裝完整版的Loadrunner 11,所有負(fù)載機(jī)上安裝負(fù)載發(fā)生器loadrunner generator,同時配置Loadrunner agent runtime settings configuration,所有虛擬機(jī)啟動loadrunner agent process。測試步驟如下:
在主控機(jī)上進(jìn)行腳本的錄制,因網(wǎng)站采用HTTPS協(xié)議,故錄制腳本前需要對端口映射進(jìn)行配置,并配置好客戶端指定的.pem格式的證書,之后即可開始錄制腳本[6]:打開統(tǒng)一身份認(rèn)證登錄頁面,輸入賬號密碼,點(diǎn)擊登錄(事務(wù)login開始),登錄后返回登錄成功頁面(事務(wù)login結(jié)束)。錄制成功的腳本中包含了證書部分,如下:
對錄制好的腳本進(jìn)行修改,將登錄用戶名和密碼參數(shù)化,并添加檢查點(diǎn),保證所有用戶都能登錄成功,避免因部分用戶賬戶或密碼錯誤影響系統(tǒng)性能,同時對腳本中的參數(shù)JSESSIONID3進(jìn)行關(guān)聯(lián)[7]。關(guān)聯(lián)方法如下:
因每年的本科新生選課為統(tǒng)一身份認(rèn)證并發(fā)量最多的一個階段,每年新入校學(xué)生為4600人左右,故本次測試最多模擬5000人并發(fā)登錄系統(tǒng)。
在主控機(jī)中模擬100,500,1000,……,5000個用戶同時并發(fā)登錄系統(tǒng),要求瞬時并發(fā),以完成登錄操作、返回登錄成功頁面為準(zhǔn)。為了更好模擬用戶的使用習(xí)慣、節(jié)省時間和網(wǎng)絡(luò)帶寬資源,在進(jìn)行場景配置時忽略Thinktime時間、出現(xiàn)錯誤仍繼續(xù)、不下載如js/css/圖片等非HTML資源、每次迭代不模擬新用戶、不清除緩存,以便測試結(jié)果更接近實(shí)際情況[4]。
在主控機(jī)的Loadrunner generator中添加8個負(fù)載機(jī),并進(jìn)行連接測試,連接就緒后即可進(jìn)行負(fù)載測試。
本次測試分別模擬100,500,1000,……,5000個用戶同時并發(fā)登錄系統(tǒng),以1000個用戶瞬時并發(fā)登錄系統(tǒng)為例,測試結(jié)果分析概要如圖1所示。
圖1顯示:1000個用戶并發(fā)登錄系統(tǒng)總計(jì)用時36s,平均響應(yīng)時間為0.067s,平均每秒點(diǎn)擊次數(shù)未189.189次,平均吞吐量時962,027字節(jié)/秒,事務(wù)成功率為100%。90%的用戶登錄的平均響應(yīng)時間在0.103s以下。由此可見,當(dāng)1000個用戶并發(fā)登錄系統(tǒng)時,服務(wù)器的平均響應(yīng)時間很短,響應(yīng)用戶請求的速度極快。
圖1 1000個用戶同時登錄系統(tǒng)的測試結(jié)果
圖2 運(yùn)行用戶數(shù)和平均事務(wù)響應(yīng)時間關(guān)聯(lián)
圖3 吞吐量和每秒點(diǎn)擊次數(shù)
圖2為1000用戶并發(fā)登錄系統(tǒng)時,運(yùn)行用戶數(shù)和平均事務(wù)響應(yīng)時間的關(guān)聯(lián)圖,該圖能夠直觀地反映出一方的變化對另一方的影響。隨著運(yùn)行用戶數(shù)的增加,理論上平均響應(yīng)時間應(yīng)該越來越長。但圖2顯然不是這樣,其原因在于:在并發(fā)測試的最后時刻,所有用戶同時執(zhí)行一個事務(wù),但由于各個用戶完成事務(wù)所用的時間長短不同,比較快完成事務(wù)的用戶,在完成之后就先退出了系統(tǒng),在這種情況下,系統(tǒng)中運(yùn)行的用戶數(shù)量越來越少,同時,由于這些用戶完成事務(wù)比較慢、所用時間較長,Loadrunner計(jì)算事務(wù)的平均響應(yīng)時間也就長了,所以就出現(xiàn)了圖2中用戶越少事務(wù)響應(yīng)時間反而越長的情況。
圖3是1000個用戶并發(fā)登錄系統(tǒng)時,吞吐量和每秒點(diǎn)擊次數(shù)的疊加圖。由于每秒點(diǎn)擊次數(shù)反映了客戶端每秒向服務(wù)器提交的請求數(shù)量??蛻舳税l(fā)出的請求越多,服務(wù)器的吞吐量也應(yīng)該越大,正常情況下,兩者應(yīng)該是一一對應(yīng)成正比的關(guān)系。圖3正好反映出這種關(guān)系,表明服務(wù)器能夠及時準(zhǔn)確處理客戶端的請求。
上述是對1000個用戶并發(fā)測試進(jìn)行詳細(xì)分析,接下來將對50,100,……,1000個用戶并發(fā)測試的平均響應(yīng)時間、平均每秒點(diǎn)擊次數(shù)、平均吞吐量三個指標(biāo)進(jìn)行匯總和分析。
圖4顯示并發(fā)用戶數(shù)與平均響應(yīng)時間的關(guān)系,最佳性能的服務(wù)器其平均響應(yīng)時間隨著并發(fā)數(shù)的增加變得比較平緩??梢郧逦吹剑S著并發(fā)用戶數(shù)的增加,平均響應(yīng)時間增幅基本不變,表明系統(tǒng)的處理能力并沒有隨著并發(fā)用戶數(shù)的增加而下降,非常穩(wěn)定,未受到并發(fā)數(shù)增加的影響。且當(dāng)并發(fā)用戶數(shù)為5000時,平均響應(yīng)時間為0.063s,用戶體驗(yàn)非常好。
圖4 并發(fā)用戶數(shù)與平均響應(yīng)時間
圖5 并發(fā)用戶數(shù)與平均每秒點(diǎn)擊次數(shù)
圖6 并發(fā)用戶數(shù)與平均吞吐量
圖5表示并發(fā)用戶數(shù)與平均每秒點(diǎn)擊次數(shù)的關(guān)系。最佳性能的服務(wù)器每秒處理請求的個數(shù)是隨著并發(fā)數(shù)的增加而增加的[8]。圖中可以直觀看到:服務(wù)器處理請求的個數(shù)隨著并發(fā)數(shù)的增加有上升趨勢,說明服務(wù)器處理能力不錯,響應(yīng)速度沒有變慢,能夠及時處理用戶提交的HTTP請求。
圖6為并發(fā)用戶數(shù)與平均吞吐量的關(guān)系。吞吐量即服務(wù)器每秒接受到的數(shù)據(jù)流量。理想狀態(tài)下,服務(wù)器接受到的數(shù)據(jù)流量一定是隨著并發(fā)數(shù)的增加而上升的[9]。該圖清晰的表明當(dāng)并發(fā)數(shù)增加的同時服務(wù)器接受的數(shù)據(jù)流量存在上升趨勢。
圖5和圖6兩條曲線走向基本一致,說明服務(wù)器能及時接受客戶端提交的HTTP請求,并能正確返回請求結(jié)果[10]。
通過本次測試可看到,西安交通大學(xué)統(tǒng)一身份認(rèn)證系統(tǒng)服務(wù)器完全可以承受5000個用戶的并發(fā)登錄。一般情況下,用戶并發(fā)數(shù)相當(dāng)于實(shí)際用戶數(shù)的四分之一,即5000個用戶同時并發(fā)登錄系統(tǒng),相當(dāng)于20000個用戶同時系統(tǒng)在線[11]。本次測試表明服務(wù)器完全可以承受20000個用戶系統(tǒng)在線。由平均響應(yīng)時間、平均吞吐量、平均每秒點(diǎn)擊次數(shù)等軟件性能指標(biāo)可直觀的看出網(wǎng)絡(luò)性能非常優(yōu)秀,客觀地反映出服務(wù)器處理能力很好。有關(guān)服務(wù)器CPU、內(nèi)存等硬件資源的監(jiān)控,還需要在后續(xù)的測試中進(jìn)一步監(jiān)測分析。