1 怎樣的效能測試結果才是有效的

1.1 錯誤觀點

效能測試工具運行一定數量用戶都能成功,則表示該伺服器能支援這麼多用戶數。這是錯誤的。

解答:

A. 因為一次有效的測試結果,不只用戶都運行成功,同時需要保證瀏覽一個頁面或一次交易的回應時間在合理範圍。“2-5-8原則”,簡單說,就是當用戶瀏覽一個頁面或一次交易能夠在2秒以內得到回應時,會感覺系統的回應很快;當用戶在2-5秒之間得到回應時,會感覺系統的回應速度還可以;當用戶在5-8秒以內得到回應時,會感覺系統的回應速度很慢,但是還可以接受;而當用戶在超過8秒後仍然無法得到回應時,會感覺系統糟透了,或者認為 系統已經失去回應,而選擇離開這個Web站點,或者發起第二次瀏覽請求。

B. 測試場景不一定模擬了真實的實務場景,因為瀏覽器是並發多線程多TCP完成一個頁面的,而測試工具基本都是1,2個線程;對伺服器的壓力是不一樣的,真實環境的TCP壓力是效能測試工具虛擬環境的幾倍。

名 詞 解 釋 :伺服器(Server)
是指能向網路用戶提供特定服務的軟體和硬體。這個伺服器的定義包含了以下兩個方面的內容:一方面..more

2 影響WEB伺服器效能指標的因素有哪些

為什麼效能測試工具,需要提供事件(頁面或交易、全腳本)指標、TCP連接、存取量、伺服器資源監控、請求數/回應數。

  1.  硬體資源:如CPU、記憶體、網卡存取量、I/O能力、SWAP交換能力
  2.  線程數:這裡介紹JAVA的WEB伺服器,預設每線程佔用的記憶體為2M,而32為系統JAVA進程(如tomcat、JBoss)佔得空間只有2G(一般比這個小),因此線程數有限制;64為無限制線程,但CPU要跟得上
  3.  TCP連接數:作業系統的TCP連接數理論值一般很大,作業系統對TCP連接設置有預設值(怎麼配置,可以網上搜尋,這裡不介紹);但實際測試中TCP連接在幾百,就出現測試的回應時間很長。抓包分析,原來是三次握手的SYN包伺服器不及時回應,導致SYN重傳(3秒後,9秒後)。
  4. 如果SYN丟了,則會重發,但是第一次是3秒後,第2次是在9秒後,如果重發才收到的SYN_ACK,則導致TCP連接超長,從而導致實務回應時間延長。
  5.  回應時間:伺服器回應時間小,用戶體驗才好,在大量用戶並發的情況下,HTTP回應時間在用戶忍受度下才是有效的,一般採用“2-5-8原則”。
  6.  軟體本身語法效能演算法:這個不做介紹,如較差的算演法、查詢資料庫時間長等等。

3 測試人員經常遇到的一些常見問題及解答

3.1為什麼使用瀏覽器瀏覽頁面回應很快,1-2秒就完成;而使用測試工具卻需要10幾秒,甚至幾十秒才跑完腳本

解答:

A. 這是由於瀏覽器瀏覽頁面回應是並發的,同時並發多個線程(多個Socket),而效能測試工具基本是串行發送請求的。如果一個頁面有100個資源(CSS、HTML、JS、圖片),需要發送100個HTTP請求,如果使用6個線程(瀏覽器),則每個大概請求14個HTTP;如果使用一個線程(測試工具),則需要請求100個,時間當然大很多。下圖為chrome瀏覽器調試工具顯示的並發情況

B. 另外瀏覽器具有緩存功能,如果之前瀏覽了www.qq.com,會把一些圖片緩存在瀏覽器臨時目錄,下次請求時發送的HTTP請求會帶上If-Match或Etag等頭域,WEB伺服器判斷資源沒改變則會304回應,而不是回200 OK,這樣減少資源的傳輸,所以時間就小。而有些測試工具是不攜帶這些頭域(包括Loadrunner),因此回的回應是200 OK。所以測試人員預設真實測試時,可以考慮部分有緩存,部分沒緩存。

3.2效能測試工具是怎麼模擬WEB虛擬用戶

A. 錄製

使用瀏覽器進行正常實務操作,效能測試工具錄製下HTTP請求訊息。一般需要記錄URL與頭域、內容、回應碼。雖然不同的效能測試工具錄製方式不一樣(如loadrunner採用Hook,JMeter採用代理或badbody,kylinPET採用網卡抓包與代理),但都能實現錄製正常實務的 HTTP請求。

測試工具最好能錄製出緩存頭域,即If-Match或Etag,loadrunner好像不支援錄製緩存頭域。

B.模擬用戶

根據錄製的腳本發送HTTP請求與接收回應,發送前替換參數(實現多用戶不同參數值)、接收時關聯參數(從接收的回應消息獲取參數值,如Cookie、JSessionID)

下面簡單列舉使用過的效能測試工具是如何模擬的(工具運行一個用戶,然後使用wireshark抓包分析得到的結論):

  • Loadrunner:根據錄製腳本發送HTTP請求,如果HTTP請求包括內嵌資源(如圖片、CSS、JS),會啟動第二個線程執行內嵌資源,即Loadrunner支援同時兩個線程兩個TCP連接。
  • kylinPET(國產):可通過配置設置一個線程或者多個線程並發發送HTTP請求,多個線程並發及TCP連接數跟瀏覽器行為一樣。
  • JMeter:只有一個線程,一個TCP連接
  • 其他工具:本人沒用過,請用過的兄弟姐妹可以補充下。通過wireshark抓包分析。

3.3怎樣才能測試出WEB伺服器能支援多少真實用戶,怎樣的伺服器調優參數才合理

解答:

這需要效能測試工具可以模擬出真實用戶的行為,包括HTTP請求數、每用戶並發線程與TCP連接數、思考時間、有無緩存。

為什麼需要模擬真實用戶的線程數與TCP連接數呢,上面提到過,WEB伺服器的線程數與TCP連接數往往很低,這不是提高硬體就能輕鬆解決的,這也是伺服器調優比較複雜的配置。

因此,只有盡最大能力模擬真實用戶(瀏覽器或其它WEB客戶端,可能不同瀏覽器的並發線程與TCP數都不一樣)的行為的測試場景,測試結果才最真實,伺服器調優才最有意義。

4 怎樣才能測試系統支援多少用戶

4.1 模擬真實用戶的行為

只有模擬用戶一樣的行為才可以系統支援的測試用戶數有效,因此需要模擬一樣的並發數、TCP連接數、甚至可以是HTTP請求的時間間隔。用戶可以是瀏覽器、智能手機、智能機頂盒,測試工具模擬他們一樣的行為才是最有效的測試。

4.2 測試結果數據在合理範圍

4.2.1 用戶統計

成功數、失敗數、每秒線上數、最大線上數,通過這些指標分析此次測試結果支援的用戶數、用戶最大數

4.2.2 點擊率

每秒平均HTTP請求數、回應數。分析系統的處理能力

4.2.3 事件

事件成功、失敗、時間,事件一般是整個腳本運行時間、或者一個頁面或一個交易,通過結果分析,得出每個事物的時間是否合理,符合“2-5-8”原則,如果測試結果顯示事物時間非常大,則表示系統支援不了此次測試的用戶,因為用戶的回應時間太大(像火車訂票一樣,太多用戶導致回應時間長,用戶無法忍受,則認為這個系統爛)。

當然,還需要查看事件的百分比,分析90%、80%、70%、60%的事件時間是否在合理範圍。

4.2.4 TCP連接訊息

TCP連接成功數、失敗數、TCP三次握手時間。因為此次測試結果可能是由於伺服器系統或網路的TCP的丟包與重傳才導致延時大的。如果是伺服器的原因,伺服器收到TCP的SYN而不處理,可以通過調試伺服器的TCP配置來優化。

怎麼才知道是伺服器的問題呢,這個需要效能測試工具能給出TCP連接時間(當前瞭解只有kylinPET可以支援),如果顯示超過3秒,這時需要檢查是網路還是伺服器問題,可以在伺服器端抓包(tcpdump或wireshark)然後分析TCP的SYN訊息(個數、時間)

4.2.5 資源佔用

伺服器的CPU、記憶體、帶寬、I/O是不是已經不足,導致系統上不去是哪個原因,根據原因進行調優或升級。

測試時需要考慮效能測試工具的CPU佔用率,如果效能測試工具佔用CPU很高,此次測試可能瓶頸是在工具,而導致測試結果是無效的。

名 詞 解 釋 :JavaScript
一種高階程式語言,通過解釋執行,是一門動態型別,物件導向(基於原型)的直譯語言。它已經由ECMA(歐洲電腦製造商協會)通過ECMAScript實作語言的標準化..more

Related Posts

專欄文摘

社群行銷如何抓住大學生的心

  各大院校在校大學生無疑是社群媒體上的活躍分子。這些人年輕 Read more...

專欄文摘

讓你的網頁導覽設計更完善更清晰

導覽在Web中扮演一個回答用戶”我是誰?”&# Read more...

專欄文摘

從零打造新品牌須先建立信仰粉絲(一)

新品牌是指剛進入市場的產品的品牌或原有的產品經過改進以後賦予的新的品牌 Read more...