吳 銳
(安徽省教育招生考試院 網(wǎng)絡(luò)信息中心, 安徽 合肥 230022)
互聯(lián)網(wǎng)用戶具有地理分布范圍廣、數(shù)量不確定、訪問突發(fā)性強等特點,Web應(yīng)用系統(tǒng)在設(shè)計時很難模擬大量用戶同時訪問的場景,對并發(fā)負(fù)載狀態(tài)缺乏量化測量和監(jiān)控手段,正式運行后容易遇到訪問高峰而發(fā)生系統(tǒng)響應(yīng)速度變慢甚至中斷等情況,鐵道部12306售票網(wǎng)站就是屢被詬病的典型案例.Web應(yīng)用系統(tǒng)需在部署前精確測量并發(fā)性能、部署后實時監(jiān)控并發(fā)負(fù)載,根據(jù)運行前預(yù)估的和運行時實際的用戶并發(fā)訪問規(guī)模,合理部署、及時調(diào)整系統(tǒng)的軟硬件數(shù)量,保證用戶對系統(tǒng)的正常訪問.
Web應(yīng)用系統(tǒng)一般采用B/S架構(gòu),本文所研究的并發(fā)指的是系統(tǒng)在同一個時間段內(nèi)執(zhí)行的所有用戶HTTP請求和響應(yīng)的總和,當(dāng)這個時間段劃分為更小的時間片時,發(fā)出請求的用戶、HTTP請求和響應(yīng)可能是不同的.
HTTP是基于TCP的應(yīng)用層協(xié)議,Web應(yīng)用系統(tǒng)并發(fā)也是系統(tǒng)和用戶之間所有TCP連接的總和,但一個HTTP請求可能因調(diào)用多個資源而產(chǎn)生多個TCP連接.每個TCP連接都會耗費系統(tǒng)一定數(shù)量的CPU使用率、內(nèi)存、互聯(lián)網(wǎng)帶寬等資源,內(nèi)存、互聯(lián)網(wǎng)帶寬很容易進(jìn)行擴充,不應(yīng)成為系統(tǒng)并發(fā)性能的瓶頸,執(zhí)行計算任務(wù)的CPU(包括服務(wù)器CPU、防火墻CPU等)是系統(tǒng)并發(fā)性能的決定因素[1].
1.2.1TCP連接狀態(tài)
根據(jù)TCP/IP協(xié)議標(biāo)準(zhǔn)[2],TCP連接有9種狀態(tài)(SYN-RECEIVED、ESTABLISHED、TIME-WAIT等).其中僅ESTABLISHED狀態(tài)TCP連接傳輸應(yīng)用數(shù)據(jù)、執(zhí)行計算,對系統(tǒng)資源消耗較大;其他狀態(tài)的TCP連接大多數(shù)處于等待狀態(tài),活動時也僅傳輸握手信號或關(guān)閉信號,對系統(tǒng)資源消耗很小.另外Linux 2.6以上版本內(nèi)核的epoll機制[3],可顯著減少系統(tǒng)存在大量并發(fā)連接、只有少量連接活躍情況下的CPU使用率,使非ESTABLISHED狀態(tài)TCP連接對CPU的使用率進(jìn)一步減小.
正常運行的Web應(yīng)用系統(tǒng)會主動關(guān)閉與用戶的TCP連接,根據(jù)TCP狀態(tài)轉(zhuǎn)換圖,系統(tǒng)一般只大量出現(xiàn)ESTABLISHED、TIME-WAIT兩種狀態(tài)的TCP連接.對于TIME-WAIT狀態(tài)TCP連接,可在Linux/Windows操作系統(tǒng)中限制其最大數(shù)量,避免對系統(tǒng)資源的嚴(yán)重消耗.
HTTP協(xié)議開啟Keep-Alive特性可節(jié)省系統(tǒng)與同一用戶建立TCP連接過程的開銷.對于大量用戶短時間集中訪問的系統(tǒng),采用Keep-Alive會導(dǎo)致系統(tǒng)被迫長時間保持大量ESTABLISHED狀態(tài)TCP連接,系統(tǒng)資源消耗反而變大.另外現(xiàn)代操作系統(tǒng)越來越先進(jìn),使建立TCP連接的開銷越來越小,如epoll機制.Keep-Alive也會造成ESTABLISHED狀態(tài)TCP連接的忙碌和空閑無法區(qū)分,ESTABLISHED狀態(tài)TCP連接數(shù)量與系統(tǒng)并發(fā)負(fù)載狀態(tài)的關(guān)聯(lián)度減小.所以本文討論的Web應(yīng)用系統(tǒng),關(guān)閉了HTTP的Keep-Alive特性.
Web應(yīng)用系統(tǒng)中的一些服務(wù)器,可能是另外一些服務(wù)器的客戶端,TCP連接的被動關(guān)閉導(dǎo)致系統(tǒng)出現(xiàn)一定數(shù)量的CLOSE-WAIT狀態(tài)TCP連接,但對系統(tǒng)性能影響很小:(1)服務(wù)器對服務(wù)器的連接一般會采用連接池(connection pool)或持久化(persistent)等技術(shù)來提高性能,這種連接長時間保持ESTABLISHED狀態(tài),不會出現(xiàn)連接狀態(tài)的經(jīng)常變化;(2)服務(wù)器對服務(wù)器的TCP連接總數(shù)有限,相比服務(wù)器與用戶之間動輒數(shù)千的TCP連接并發(fā),數(shù)量微不足道.
在實踐中,Web應(yīng)用系統(tǒng)也有可能出現(xiàn)大量SYN-RECEIVED狀態(tài)TCP連接,此時系統(tǒng)一般處于兩種狀態(tài):遭到了SYN FLOOD攻擊、超負(fù)載運行導(dǎo)致與用戶的TCP連接3次握手變慢.
綜上所述,經(jīng)合理配置的系統(tǒng)在正常運行時,ESTABLISHED狀態(tài)TCP連接數(shù)量與系統(tǒng)運行負(fù)載密切相關(guān).
1.2.2并發(fā)性能指標(biāo)
Web應(yīng)用系統(tǒng)的并發(fā)性能,可從響應(yīng)時間、吞吐量、用戶行為等方面進(jìn)行研究[4],本文從系統(tǒng)與用戶之間的TCP連接出發(fā),提出以下衡量Web應(yīng)用系統(tǒng)并發(fā)性能的4個指標(biāo):
1)PETC-Parallel Established TCP Connections.系統(tǒng)與用戶之間瞬時處于ESTABLISHED狀態(tài)的TCP連接數(shù),PETC的最大值MPETC是衡量系統(tǒng)并發(fā)性能的最重要指標(biāo).
2)NTCPS-New TCP Connections Per Second.系統(tǒng)與用戶之間每秒新創(chuàng)建的TCP連接數(shù),代表系統(tǒng)每秒響應(yīng)用戶新請求的能力.
3)FETCPS-Finished Established TCP Connections Per Second.系統(tǒng)與用戶之間每秒結(jié)束ESTABLISHED狀態(tài)的TCP連接數(shù),結(jié)合完成的總時間,可以計算出系統(tǒng)完成單個TCP連接所需的時間.
4)MFETCPS-Max Finished Established TCP Connections Per Second.系統(tǒng)與用戶之間每秒最多可完成的ESTABLISHED狀態(tài)TCP連接數(shù),可根據(jù)FETCPS的單個TCP連接所需完成時間進(jìn)行理論推算得出.
1.2.3系統(tǒng)運行狀態(tài)
隨著用戶每秒對Web應(yīng)用系統(tǒng)TCP連接請求從無到有、逐漸增多,系統(tǒng)負(fù)載逐漸加大,PETC、NTCPS、FETCPS三項指標(biāo)先逐漸增大、到了最大值后開始減小,MFETCPS指標(biāo)一直減小,可將系統(tǒng)的運行狀態(tài)劃分為3個階段:
1)輕負(fù)載
當(dāng)用戶每秒發(fā)出的TCP連接請求數(shù)較少時,系統(tǒng)CPU使用率小于100%,系統(tǒng)每秒可完成處理的ESTABLISHED狀態(tài)TCP連接數(shù)大于新創(chuàng)建的TCP連接數(shù),并發(fā)性能指標(biāo)之間的數(shù)量關(guān)系為:NTCPS=FETCPS 2)均衡負(fù)載 當(dāng)用戶每秒發(fā)出的TCP連接請求數(shù)達(dá)到一定數(shù)量時,系統(tǒng)CPU使用率為100%,系統(tǒng)每秒新建的TCP連接數(shù)等于每秒完成處理并關(guān)閉的TCP連接數(shù),系統(tǒng)處于吞吐動態(tài)平衡狀態(tài),并發(fā)性能指標(biāo)之間的數(shù)量關(guān)系為:NTCPS=FETCPS=MFETCPS,在TCP連接請求對時間均勻分布的前提下,PETC=NTCPS.將系統(tǒng)此運行狀態(tài)稱為最佳運行狀態(tài),此時PETC達(dá)到最大值.理論上用戶向系統(tǒng)發(fā)出的MPETC個TCP連接,可在一秒之內(nèi)獲得所需的結(jié)果,用戶感覺不到系統(tǒng)響應(yīng)的延時. 3)重負(fù)載 當(dāng)用戶每秒發(fā)出的TCP連接請求數(shù)再加大,系統(tǒng)負(fù)載再加重,對用戶TCP請求的響應(yīng)時間變長、甚至超時中斷,此時系統(tǒng)CPU使用率仍為100%,但系統(tǒng)被迫耗費更多的CPU資源去處理與用戶的TCP三次握手連接,用于處理ESTABLISHED狀態(tài)TCP連接的CPU資源反而減少,PETC、FETCPS、MFETCPS從最大值開始減小,并發(fā)指標(biāo)之間的數(shù)量關(guān)系為:NTCPS>FETCPS=MFETCPS,在TCP連接請求對時間均勻分布的前提下,PETC>FETCPS,但PETC與NTCPS的大小關(guān)系不確定. 用戶每秒TCP連接請求數(shù)與PETC、MFETCPS兩項指標(biāo)之間的數(shù)量關(guān)系如圖1所示. 圖1 TCP請求數(shù)與并發(fā)指標(biāo) Web應(yīng)用系統(tǒng)在運行時,存在著多個用戶對多種資源的多個請求,系統(tǒng)在響應(yīng)這些差異化的請求時所耗費的CPU使用率、內(nèi)存、互聯(lián)網(wǎng)帶寬等資源相差很大,給測量系統(tǒng)并發(fā)性能帶來了挑戰(zhàn),解決方案有兩種: 第一種,采用復(fù)雜的分布式測試方案,借助于商業(yè)測試軟件(如LoadRunner)模擬對Web應(yīng)用系統(tǒng)的大規(guī)模互聯(lián)網(wǎng)訪問[5],這種方案實施成本高,對復(fù)雜場景的模擬也存在困難. 第二種,將用戶HTTP請求、系統(tǒng)HTTP響應(yīng)按照運行流程,分解成最小的、不可再分割的原子請求和響應(yīng)集合,簡化測試場景,使用自編或開源軟件精確測量各類原子請求和響應(yīng)的并發(fā)性能,再將這些原子請求和響應(yīng)按并聯(lián)或串聯(lián)的方式進(jìn)行組合計算,最后得出整個系統(tǒng)的并發(fā)性能[6]. 本文采取的是第二種方案. 按照以下三種分解方法,可將Web應(yīng)用系統(tǒng)所有HTTP請求與響應(yīng)分解為各類原子請求與響應(yīng)集合,而原子請求和響應(yīng)與TCP連接之間存在著一一對應(yīng)關(guān)系,從而將并發(fā)性能測量轉(zhuǎn)換為對TCP連接數(shù)的測量. 2.1.1并行響應(yīng)的分解 用戶向系統(tǒng)發(fā)出一個HTTP請求獲取資源A1,但A1需調(diào)用資源A2、…、An,系統(tǒng)需一次返回n個資源進(jìn)行響應(yīng),這里的資源是個廣義的概念,可以是靜態(tài)網(wǎng)頁、動態(tài)網(wǎng)頁、圖片、驗證碼生成等.將資源A1改造為A1′,消除對資源A2、…、An的調(diào)用,該HTTP請求和響應(yīng)分解成對資源A1′、A2、…、An的請求和響應(yīng)H1、H2、…、Hn,如圖2所示,分別對這些請求和響應(yīng)測量出最大并發(fā)數(shù)MPETC1、MPETC2、…、MPETCn. 圖2 并行響應(yīng)的原子分解 計算得 (1) 2.1.2串行請求的分解 在動態(tài)交互系統(tǒng)中,用戶需按照一定的次序連續(xù)發(fā)出請求:H1、H2、…、Hn,才能獲得所需要的最終資源An.將請求H1、H2、…、Hn改造為請求H1、H2′、…、Hn′,發(fā)出請求Hk′(k=2,…,n)時,攜帶請求H1、H2、…Hk-1的響應(yīng)結(jié)果,消除Hk′對前面k-1個請求的依賴,使得這n個請求彼此獨立,如圖3所示,這種改造并不會改變每個請求的最大并發(fā)數(shù),對每個請求H1、H2′、…、Hn′,分別測量出最大并發(fā)數(shù)MPETC1、MPETC2、…、MPETCn. 圖3 串行請求的原子分解 假設(shè)原系統(tǒng)處于最佳運行狀態(tài)有MPETC個并發(fā),則請求H1、H2、…、Hn的并發(fā)數(shù)是相同的,論證如下:因為用戶數(shù)量足夠多、操作彼此獨立,假設(shè)請求Hk的并發(fā)數(shù)PETCk最小,則Hk之后的請求因處理速度較快、被Hk請求阻塞,并發(fā)數(shù)自動降為PETCk,釋放了部分CPU資源可用于處理Hk請求;Hk之前的請求因處理速度較快,在Hk請求處產(chǎn)生瓶頸,部分用戶因系統(tǒng)響應(yīng)變慢而處于等待狀態(tài),阻塞了新用戶對系統(tǒng)發(fā)出的新請求,系統(tǒng)負(fù)載減小,系統(tǒng)對請求Hk的處理速度加快,最終PETCk與前面k-1請求的并發(fā)數(shù)相同.同理可得公式(1). 2.1.3并行請求的分解 計算得 (2) 特別對于所有資源都被等概率(Pi=1/n,i=1…n)訪問的特殊情形,公式(2)即為公式(1). 對并發(fā)指標(biāo)的測量,可使用基于監(jiān)控和基于測試軟件兩種方法,基于監(jiān)控適和對系統(tǒng)各個時刻的PETC、NTCPS進(jìn)行連續(xù)測量,結(jié)合Cacti數(shù)據(jù)采集和繪圖軟件可獲取該并發(fā)指標(biāo)在任意時刻的數(shù)值和圖形[8];基于測試軟件適合對FETCPS、MFETCPS進(jìn)行有限次測量來確定MPETC. 2.2.1PETC的測量 (1)基于SNMP監(jiān)控 SNMP[9]的tcpCurrEstab(OID:1.3.6.1.2.1.6.9)監(jiān)控值代表系統(tǒng)中ESTABLISHED和CLOSE-WAIT兩種狀態(tài)的TCP連接總數(shù),前文已經(jīng)論述了在Web應(yīng)用系統(tǒng)服務(wù)器中CLOSE-WAIT狀態(tài)TCP連接數(shù)為零或極少,但tcpCurrEstab值不能直接作為PETC值,在多層架構(gòu)的系統(tǒng)中,用戶與系統(tǒng)第一層建立一個TCP連接,第一層會依次與其他層建立TCP連接,這些連接的生命周期相同,連接的總數(shù)與系統(tǒng)的層數(shù)相關(guān),此時tcpCurrEstab值與PETC值呈倍數(shù)關(guān)系. (2)基于應(yīng)用軟件監(jiān)控 一些應(yīng)用軟件內(nèi)置了與用戶建立的ESTABLISHED狀態(tài)TCP連接數(shù)監(jiān)控,可直接獲取PETC值,如Nginx軟件的NginxStatus監(jiān)控. 2.2.2NTCPS的測量 SNMP的tcpPassiveOpens(OID:1.3.6.1.2.1.6.6)監(jiān)控值代表系統(tǒng)中TCP端口由LISTEN狀態(tài)轉(zhuǎn)變?yōu)镾YN-RECEIVED狀態(tài)的數(shù)量,與PETC的情形類似,該數(shù)值與NTCPS值呈倍數(shù)關(guān)系. 2.2.3FETCPS和MFETCPS的測量 對Web應(yīng)用系統(tǒng)的HTTP請求和響應(yīng)進(jìn)行原子分解后,降低了并發(fā)性能測試軟件的復(fù)雜度,對于每個原子請求和響應(yīng),可使用簡單的并發(fā)性能測試軟件向系統(tǒng)發(fā)出一定并發(fā)數(shù)量的原子HTTP請求,結(jié)合完成這些請求實際所需的總時間,得出該并發(fā)數(shù)量下的FETCPS和MFETCPS. 開源軟件Apache自帶的ab[10]可用于測量原子請求和響應(yīng)的MFETCPS,使用的命令格式為:ab -c c0-n n0 http://ip/index.html,其中參數(shù)c0為并行請求數(shù)、n0為請求總數(shù),ab軟件采用的測試策略是前一個請求被系統(tǒng)響應(yīng)完畢就立即發(fā)出一個新請求,在c0個并行請求的前提下,對系統(tǒng)發(fā)出盡可能多的請求數(shù).所以命令執(zhí)行完畢后輸出的結(jié)果中:“Time per request”數(shù)值t0是系統(tǒng)完成每個TCP連接所需要的時間、“Requests per second”數(shù)值r0即為MFETCPS. 2.2.4MPETC的測量 基于監(jiān)控和ab軟件都能測量出MPETC數(shù)值,但基于ab軟件的測量更快捷,可采用二分查找法: 1)發(fā)出一個較小的并行請求數(shù)C1,測得MFETCPS1,此時C1 2)發(fā)出一個很大的并行請求數(shù)C2,測得MFETCPS2,此時C2>MFETCPS2. 3)發(fā)出并行請求數(shù)C3=(C1+C2)/2,測得MFETCPS3,若C3=MFETCPS3,則MPETC值為C3,否則根據(jù)C3和MFETCPS3的大小關(guān)系重復(fù)以上步驟. 查分系統(tǒng)采用公認(rèn)的動態(tài)網(wǎng)頁并發(fā)性能最高的Linux/Nginx/PHP軟件組合并進(jìn)行了設(shè)計優(yōu)化[11-12],系統(tǒng)架構(gòu)如圖4所示.負(fù)載均衡器后端是多臺查分服務(wù)器,所有查分服務(wù)器共用Oracle數(shù)據(jù)庫服務(wù)器,查分服務(wù)器的硬件配置為1顆4核3.0GHz主頻CPU、4G內(nèi)存,Oracle數(shù)據(jù)庫服務(wù)器硬件配置為2顆4核2.4GHz主頻CPU、16G內(nèi)存. 圖4 高考網(wǎng)上查分系統(tǒng)架構(gòu) 查分系統(tǒng)對外開放前,首頁是一個html靜態(tài)頁面,發(fā)布提示信息給考生.查分系統(tǒng)對外開放后,首頁是一個php動態(tài)頁面,需考生輸入座位號、身份證號、驗證碼,發(fā)送給php分?jǐn)?shù)查詢動態(tài)頁面,獲得分?jǐn)?shù)結(jié)果. 在計算復(fù)雜度確定的前提下,Web頁面的并發(fā)數(shù)與頁面長度直接相關(guān),本查分系統(tǒng)涉及的所有頁面大小控制在5KB左右,除了驗證碼的圖片,不包含其他任何圖片,否則系統(tǒng)對互聯(lián)網(wǎng)帶寬需求太大. Cacti系統(tǒng)每隔1min采集一次PETC、NTCPS、CPU使用率等監(jiān)控值并繪圖。 3.2.1 查分服務(wù)器 靜態(tài)首頁僅含靜態(tài)文字,無需進(jìn)行原子分解;信息輸入和分?jǐn)?shù)查詢兩個動態(tài)頁面必須按順序運行,按串行請求方式進(jìn)行原子分解和公式計算;信息輸入頁面內(nèi)含文字提示和驗證碼圖片兩個資源,ab軟件無法在一次請求中獲取這兩個資源,按并行響應(yīng)方式進(jìn)行原子分解和公式計算。 1)靜態(tài)頁面 按前文所述的二分查找法測量靜態(tài)頁面的MPETC為1.06萬,見表1,ab的命令格式為:ab -c c0 -n n0 http://ip/index.html,c0的起始最小、最大值選為1000、16000,n0為600萬,保證測試的持續(xù)時間為10min左右. 表1ab軟件二分查找法測量MPETC 2)信息輸入頁面 3)分?jǐn)?shù)輸出頁面 分?jǐn)?shù)輸出頁面out.php的運行依賴于信息輸入頁面index.php以POST方式提交的座位號、身份證號、驗證碼參數(shù),測試時修改out.php代碼,使其可從測試命令行獲得以GET方式提交的參數(shù),ab的命令格式為ab -c c0 -n n0 http://ip/out.php?zwh=zwh0&sfzh=sfzh0&code=code0,同樣使用二分查找法測得每臺服務(wù)器分?jǐn)?shù)輸出頁面的MPETC為2810. 4)查分服務(wù)器 3.2.2防火墻和負(fù)載均衡器 防火墻、負(fù)載均衡器等網(wǎng)絡(luò)設(shè)備的并發(fā)性能也制約了Web應(yīng)用系統(tǒng)對用戶可提供的并發(fā)性能,網(wǎng)絡(luò)設(shè)備對于任何TCP連接,只提供數(shù)據(jù)傳輸功能、不執(zhí)行任何計算,并發(fā)性能僅與TCP連接傳輸?shù)臄?shù)據(jù)長度有關(guān).可采用黑盒測試的方式對網(wǎng)絡(luò)設(shè)備并發(fā)指標(biāo)進(jìn)行測量[13],如圖5所示.對于不同的資源Ak,發(fā)出測試請求H1,當(dāng)網(wǎng)絡(luò)設(shè)備CPU使用率為100%時,并發(fā)數(shù)PETCk即為網(wǎng)絡(luò)設(shè)備對資源Ak請求的MPETC.若網(wǎng)絡(luò)設(shè)備并發(fā)性能較好,可根據(jù)實際情況發(fā)出多路測試請求H2、…、Hm. 圖5 網(wǎng)絡(luò)設(shè)備并發(fā)性能指標(biāo)的測量 在網(wǎng)頁長度5KB的情形下,本系統(tǒng)使用的某款防火墻和負(fù)載均衡器的MPETC值分別為1.02萬、1.36萬. 在本系統(tǒng)中,防火墻和負(fù)載均衡器各一臺,無法通過增加數(shù)量來提高并發(fā)指標(biāo),這決定了整個系統(tǒng)對互聯(lián)網(wǎng)用戶可提供的最大PETC即為防火墻的MPETC:1.02萬. 3.3.1查分服務(wù)器數(shù)量 所有查分服務(wù)器的MPETC總和達(dá)到1.02萬即可,靜態(tài)網(wǎng)頁服務(wù)器只需要1臺(1.06萬)、動態(tài)網(wǎng)頁查分服務(wù)器需要3臺(3577×3=10731). 3.3.2Oracle數(shù)據(jù)庫服務(wù)器數(shù)量 在對單臺查分服務(wù)器MPETC測量時,Cacti監(jiān)控顯示分?jǐn)?shù)查詢引起的Oracle數(shù)據(jù)庫服務(wù)器CPU使用率為4%,3臺查分服務(wù)器同時運行時,Oracle數(shù)據(jù)庫服務(wù)器CPU使用率為12%,使用1臺Oracle數(shù)據(jù)庫服務(wù)器即可滿足系統(tǒng)需要. 3.3.3互聯(lián)網(wǎng)帶寬 查分系統(tǒng)對互聯(lián)網(wǎng)帶寬的最大需求為408Mbits(=1.02萬×5KB×8),遠(yuǎn)大于現(xiàn)有的200Mbits互聯(lián)網(wǎng)帶寬,解決方案有2種: 1)增加3條100M寬帶,這會增加額外的費用. 2)查分服務(wù)器啟用Nginx靜態(tài)html網(wǎng)頁和動態(tài)php網(wǎng)頁的HTTP壓縮傳輸,對于純文本信息的網(wǎng)頁,可節(jié)省50%以上的帶寬,但壓縮傳輸會消耗一些CPU使用率,尤其是動態(tài)php網(wǎng)頁的壓縮傳輸可導(dǎo)致服務(wù)器MPETC下降約25%,可通過增加1臺動態(tài)php網(wǎng)頁查分服務(wù)器來保持系統(tǒng)MPETC不減少. 3.3.4運行效果 綜上所述,查分系統(tǒng)最終采用4臺查分服務(wù)器、1臺Oracle數(shù)據(jù)庫服務(wù)器,系統(tǒng)MPETC為1.02萬,每秒有5 100個考生可查出分?jǐn)?shù)結(jié)果,預(yù)計全省50萬考生可在98s之內(nèi)完成查分. 安徽省2012年高考網(wǎng)上查分系統(tǒng)實際運行時,Cacti監(jiān)控表明系統(tǒng)PETC最大值不超過7 000,小于設(shè)計指標(biāo)1.02萬。所有查分的考生都可在信息輸入后1s之內(nèi)查出分?jǐn)?shù)結(jié)果,獲得良好的社會反響. 本文提出的HTTP請求和響應(yīng)的原子分解策略,簡化了并發(fā)性能測試的場景,降低了并發(fā)性能測試軟件的復(fù)雜度,便于精確定位系統(tǒng)并發(fā)性能瓶頸,有針對性地進(jìn)行優(yōu)化設(shè)計.本文提出的并發(fā)性能指標(biāo),在系統(tǒng)設(shè)計時可定量確定并發(fā)性能,在系統(tǒng)運行時可實時監(jiān)控并發(fā)負(fù)載狀態(tài),為保障系統(tǒng)正常運行打下基礎(chǔ). [1] 李邐. Web項目性能測試實例設(shè)計與分析[J].遼寧高職學(xué)報,2009,11(9):89-92. [2] Stevens W R.TCP/IP詳解卷1:協(xié)議[M].北京:機械工業(yè)出版社,2000:174-191. [3] 張軼凡,盧正興,王芙蓉. Linux下高性能網(wǎng)絡(luò)I/O解決方案分析[J].現(xiàn)代計算機,2006(247):90-93. [4] 蘭景英,王永恒. Web性能測試研究[J].計算機技術(shù)與發(fā)展,2008,18(11):90-93. [5] 左為平,楊曉亞. WEB應(yīng)用系統(tǒng)性能測試的實現(xiàn)[J].重慶科技學(xué)院學(xué)報:自然科學(xué)版,2012,14(1):131-132. [6] 賀樂天,孫永強. 分布式計算的并發(fā)測量[J].軟件學(xué)報,1998,9(1):30-35. [7] 劉荷花. Web性能測試的實現(xiàn)方法[J].山西電子技術(shù),2010(1):64-65. [8] The Cacti Group Inc. Cacti Manual [EB/OL]. (2012)[2012-6-25]. http://www.cacti.net/downloads/docs/html/index.html. [9] 武孟軍. 精通SNMP[M]. 北京:人民郵電出版社,2010. [10] 邵芬,于國防,付海燕. AB:一種簡單的性能測試工具[J].計算機時代,2007(12):59-60. [11] 張宴.實戰(zhàn)Nginx:取代Apache的高性能Web服務(wù)器[M]. 北京:電子工業(yè)出版社,2010. [12] 李軍.高并發(fā)Web系統(tǒng)的設(shè)計與優(yōu)化[D].北京:北京交通大學(xué),2009. [13] 楊建光,梅大成.黑盒測試方法和綜合策略的研究[J].計算機光盤軟件與應(yīng)用,2012(1):121-122.
2并發(fā)性能指標(biāo)的測量方法
2.1原子分解與MPETC計算公式




2.2測量方法
3高考網(wǎng)上查分系統(tǒng)并發(fā)性能測量
3.1查分系統(tǒng)概況

3.2MPETC的測量




3.3并發(fā)指標(biāo)與硬件數(shù)量
4結(jié)束語