1. 程式人生 > >有關效能測試結果的幾點分析原則

有關效能測試結果的幾點分析原則

效能測試結果的分析原則:

  具體問題具體分析(這是由於不同的應用系統,不同的測試目的,不同的效能關注點)

  查詢瓶頸時按以下順序,由易到難。

  伺服器硬體瓶頸-〉網路瓶頸(對區域網,可以不考慮)-〉伺服器作業系統瓶頸(引數配置)-〉中介軟體瓶頸(引數配置,資料庫,web伺服器等)-〉應用瓶頸(SQL語句、資料庫設計、業務邏輯、演算法等)

  注:以上過程並不是每個分析中都需要的,要根據測試目的和要求來確定分析的深度。對一些要求低的,我們分析到應用系統在將來大的負載壓力(併發使用者數、資料量)下,系統的硬體瓶頸在哪兒就夠了。

  效能測試結果分析中,分段排除法 很有效

  分析的資訊來源:

  1)根據場景執行過程中的錯誤提示資訊

  2)根據測試結果收集到的監控指標資料

  一.效能測試結果的錯誤提示分析

  分析例項:

  1)Error: Failed to connect to server “payment.baihe.com″: [10060] Connection

  Error: timed out Error: Server “user.baihe.com″ has shut down the connection prematurely

  分析:

  A、應用服務死掉。

  (小使用者時:程式上的問題。程式上處理資料庫的問題)

  B、應用服務沒有死

  (應用服務引數設定問題)

  例:在許多客戶端連線Weblogic應用伺服器被拒絕,而在伺服器端沒有錯誤顯示,則有可能是Weblogic中的server元素的AcceptBacklog屬性值設得過低。如果連線時收到connection refused訊息,說明應提高該值,每次增加25%

  C、資料庫的連線

  (1、在應用服務的效能引數可能太小了 2、資料庫啟動的最大連線數(跟硬體的記憶體有關))

  2)Error: Page download timeout (120 seconds) has expired

  分析:可能是以下原因造成

  A、應用服務引數設定太大導致伺服器的瓶頸

  B、頁面中圖片太多

  C、在程式處理表的時候檢查欄位太大多

  二.效能測試結果的監控指標資料分析

  1.最大併發使用者數:

  應用系統在當前環境(硬體環境、網路環境、軟體環境(引數配置))下能承受的最大併發使用者數。

  在方案執行中,如果出現了大於3個使用者的業務操作失敗,或出現了伺服器shutdown的情況,則說明在當前環境下,系統承受不了當前併發使用者的負載壓力,那麼最大併發使用者數就是前一個沒有出現這種現象的併發使用者數。

  如果測得的最大併發使用者數到達了效能要求,且各伺服器資源情況良好,業務操作響應時間也達到了使用者要求,那麼OK。否則,再根據各伺服器的資源情況和業務操作響應時間進一步分析原因所在。

  2.業務操作響應時間:

  分析方案執行情況應從平均事務響應時間圖和事務效能摘要圖開始。使用“事務效能摘要”圖,可以確定在方案執行期間響應時間過長的事務。

  細分事務並分析每個頁面元件的效能。檢視過長的事務響應時間是由哪些頁面元件引起的?問題是否與網路或伺服器有關?

  如果伺服器耗時過長,請使用相應的伺服器圖確定有問題的伺服器度量並查明伺服器效能下降的原因。如果網路耗時過長,請使用“網路監視器”圖確定導致效能瓶頸的網路問題

  2-5-10原則:簡單說,就是當用戶能夠在2秒以內得到響應時,會感覺系統的響應很快;當用戶在2-5秒之間得到響應時,會感覺系統的響應速度還可以;當用戶在5-10秒以內得到響應時,會感覺系統的響應速度很慢,但是還可以接受;而當用戶在超過10秒後仍然無法得到響應時,會感覺系統糟透了,或者認為系統已經失去響應,而選擇離開這個Web站點,或者發起第二次請求

  3.伺服器資源監控指標:

  記憶體:

  1)UNIX資源監控中指標記憶體頁交換速率(Paging rate),如果該值偶爾走高,表明當時有執行緒競爭記憶體。如果持續很高,則記憶體可能是瓶頸。也可能是記憶體訪問命中率低。

  2)Windows資源監控中,如果Process\Private Bytes計數器和Process\Working Set計數器的值在長時間內持續升高,同時Memory\Available bytes計數器的值持續降低,則很可能存在記憶體洩漏。

  記憶體資源成為系統性能的瓶頸的徵兆:

  很高的換頁率(high pageout rate);

  程序進入不活動狀態;

  交換區所有磁碟的活動次數可高;

  可高的全域性系統CPU利用率;

  記憶體不夠出錯(out of memory errors)

  處理器:

  1)UNIX資源監控(Windows作業系統同理)中指標CPU佔用率(CPU utilization),如果該值持續超過95%,表明瓶頸是CPU。可以考慮增加一個處理器或換一個更快的處理器。如果伺服器專用於SQL Server,可接受的最大上限是80-85%

  合理使用的範圍在60%至70%。

  2)Windows資源監控中,如果System\Processor Queue Length大於2,而處理器利用率(Processor Time)一直很低,則存在著處理器阻塞。

  CPU資源成為系統性能的瓶頸的徵兆:

  很慢的響應時間(slow response time)

  CPU空閒時間為零(zero percent idle CPU)

  過高的使用者佔用CPU時間(high percent user CPU)

  過高的系統佔用CPU時間(high percent system CPU)

  長時間的有很長的執行程序佇列(large run queue size sustained over time)

  磁碟I/O:

  1)UNIX資源監控(Windows作業系統同理)中指標磁碟交換率(Disk rate),如果該引數值一直很高,表明I/O有問題。可考慮更換更快的硬碟系統。

  2)Windows資源監控中,如果 Disk Time和Avg.Disk Queue Length的值很高,而Page Reads/sec頁面讀取操作速率很低,則可能存在磁碟瓶徑。

  I/O資源成為系統性能的瓶頸的徵兆 :

  過高的磁碟利用率(high disk utilization)

  太長的磁碟等待佇列(large disk queue length)

  等待磁碟I/O的時間所佔的百分率太高(large percentage of time waiting for disk I/O)

  太高的物理I/O速率:large physical I/O rate(not sufficient in itself)

  過低的快取命中率(low buffer cache hit ratio(not sufficient in itself))

  太長的執行程序佇列,但CPU卻空閒(large run queue with idle CPU)

  4.資料庫伺服器:

  SQL Server資料庫:

  1)SQLServer資源監控中指標快取點選率(Cache Hit Ratio),該值越高越好。如果持續低於80%,應考慮增加記憶體。

  2)如果Full Scans/sec(全表掃描/秒)計數器顯示的值比1或2高,則應分析你的查詢以確定是否確實需要全表掃描,以及SQL查詢是否可以被優化。

  3)Number of Deadlocks/sec(死鎖的數量/秒):死鎖對應用程式的可伸縮性非常有害,並且會導致惡劣的使用者體驗。該計數器的值必須為0。

  4)Lock Requests/sec(鎖請求/秒),通過優化查詢來減少讀取次數,可以減少該計數器的值。

  1)如果自由記憶體接近於0而且庫快存或資料字典快存的命中率小於0.90,那麼需要增加SHARED_POOL_SIZE的大小。

  2)如果資料的快取命中率小於0.90,那麼需要加大DB_BLOCK_BUFFERS引數的值(單位:塊)。

  3)如果日誌緩衝區申請的值較大,則應加大LOG_BUFFER引數的值。

  4)如果記憶體排序命中率小於0.95,則應加大SORT_AREA_SIZE以避免磁碟排序 。