性能測試學習線路圖(建議)

1 概覽

clip_image002

縱向劃分3顆子樹:vugen,controller,monitor。優先學習vugen腳本開發以及調試。html

橫向劃分爲2層:基礎知識以及高級應用。web

2 基礎知識

2.1 Loadrunner工具使用

2.1.1 建議學習路徑

Vugen開發腳本(函數使用)->controller場景設置->monitor增長計數器apache

http://www.cnblogs.com/jackei/archive/2006/10/20/534684.html編程

2.1.2 Loadrunner 認證

clip_image004

更多見windows

http://www.51testing.net/BWF_DIY/mercury/mercury_051107_1.htm瀏覽器

http://www.51testing.net/BWF_DIY/mercury/mercury_060104_11.htm性能優化

2.1.3 Vugen經常使用加強函數

增長事務:lr_start_transaction/:lr_end_transaction服務器

檢查點: web_reg_find網絡

關聯web_reg_save_param web_set_max_html_param_lensession

日誌: lr_error_messagelr_log_messagelr_output_message …

選項設置: web_set_timeout

http header: web_add_auto_header

以及更改runtime setting。

2.1.4 Loadrunner 架構圖

概覽圖

clip_image005

詳細架構圖:

clip_image006

2.2 Html/http協議

HTML 4.01 Specification:

http://www.w3.org/TR/html4/

http://www.eygle.com/digest/2006/12/html_xml_and_internet.html

對性能測試而言,META http-equiv控制http頭、瀏覽器行爲,故最爲重要。

http協議:

http://www.faqs.org/rfcs/rfc2616.html

clip_image007

客戶端發送請求:

clip_image009

服務器響應:

clip_image011

2.3 C 語言基礎編程

Loadrunner經常使用的c函數主要集中在內存分配/釋放、字符串操做、文件讀寫。

如: malloc/free

Sprintf/strcmp/strlen/

Fopen/fread/fwrite

2.4 Linux 性能分析初步

核心指令:

Top

Sar

Vmstat

Iostat

Sar -n DEV

/proc文件系統

分析經驗性步驟:

首先查看 CPU 使用狀況,按照診斷 CPU、內存或磁盤瓶頸的指導進行操做。對於下面的每一個步驟,查找一端時間內的趨勢,從中收集系統運行性能較差時的數據。另外,只有將這些數據與系統正常運行時收集的數據進行比較時才能進行準確的診斷。

步驟 1

# sar -u [interval] [iterations]
(示例: sar -u 5 30)
%idle 是否很低? 這是 CPU 未在運行任何進程的時間百分比。在一端時間內 %idle 爲零多是 CPU 瓶頸的第一個指示。

不是 -> 系統未發生 CPU 瓶頸。轉至步驟 3。
是 -> 系統可能發生了 CPU、內存或 I/O 瓶頸。轉至步驟 2。

步驟 2

%usr 是否較高? 不少系統正常狀況下花費 80% 的 CPU 時間用於用戶, 20% 用於系統。其餘系統一般會使用 80% 左右的用戶時間。

不是 -> 系統可能遇到 CPU、內存或 I/O 瓶頸。轉至步驟 3。
是 -> 系統可能因爲用戶進程遇到 CPU 瓶頸。轉至部分 3,部分 A, 調整系統的 CPU 瓶頸。

步驟 3

%wio 的值是否大於 15? (不一樣os有不一樣的閥值)

是 -> 之後記住這個值。它可能表示磁盤或磁帶瓶頸。轉至步驟 4。
不是 -> 轉至步驟 4。

步驟 4

# sar -d [interval] [iterations]
用於任何磁盤的 %busy 是否都大於 50? (請記住,50% 指示一個大概的 指南,它可能遠遠高於您系統的正常值。在某些系統上,甚至 %busy 值爲 20 可能就表示發生了磁盤瓶頸,而其餘系統正常狀況下可能就爲 50% busy。)對於同一個磁盤上,avwait 是否大於 avserv?

不是 -> 極可能不是磁盤瓶頸,轉至步驟 6。
是 -> 此設備上好像發生了 IO 瓶頸。
轉至步驟 5。

步驟 5

系統上存在磁盤瓶頸,發生瓶頸的磁盤上有哪些內容?

原始分區,
文件系統 -> 轉至部分 3,部分 B,調整發生磁盤 IO 瓶頸的系統。
Swap -> 多是因爲內存瓶頸致使的。
轉至步驟 6。

步驟 6

# vmstat [interval] [iterations]
在很長的一端時間內,po 是否老是大於 0?
對於一個 s800 系統 (free * 4k) 是否小於 2 MB,
(對於 s700 系統 free * 4k 是否小於 1 MB)? 
(值 2 MB 和 1 MB 指示大概的指南,真正的 LOTSFREE 值,即系統開始發生 paging 的值是在系統引導時計算的,它是基於系統內存的大小的。)

不是 -> 若是步驟 1 中的 %idle 較低,系統則極可能發生了 CPU 瓶頸。
轉至部分 3,部分 A,調整發生了 CPU 瓶頸的系統。
若是 %idle 不是很低,則可能不是 CPU、磁盤 IO或者內存瓶頸。
請轉至部分 4,其餘瓶頸。
是 -> 系統上存在內存瓶頸,轉至部分 3 部分 C,調整發生內存瓶頸的系統。

2.5 Windows 性能分析初步

同windows perfmon。

一樣集中在 cpu,內存,io,網絡上。

通常經驗值:

網絡

網絡利用率閥值沒有統一。 <30% or 80%?

衝突率: <1%

Packets Received Errors < 1%

I/O:

Disk Time % <90%

Avg. Disk Bytes/Read + Avg. Disk Bytes/Write <20K

Avg. Disk sec/Transfer <0.3 sec

隊列長度:Queue Length <2

Avg. Disk sec/Transfer <18 milliseconds

內存

Available Mbytes >25%

Page in+out <20 次

內存泄露以及錯誤:

Pool Nonpaged Bytes : an increase of 10 percent or more from its value at system startup

Server -> Pool Nonpaged Failures shows the number of times allocations from nonpaged pool have failed - indicates that the computer `s physical memory is too small. 應爲0

Server -> Pool Paged Failures indicate that either physical memory or a paging file is near capacity. 應爲0

Server -> Pool Nonpaged Peak shows the maximum number of bytes in nonpaged pool the server has had in use at any one point. Indicates how much physical memory the computer should have.

處理器

利用率 <85%

每一個CPU隊列長度 <2

Context Switches/sec <5000次 或者<5% of total threads

3 高級應用

3.1 性能建模

從business layer、function layer、session layer、customer layer出發,藉助日誌分析工具挖掘系統負載模型、用戶行爲模型。

clip_image013

Mercury End User Management正是一個從client視覺出發的業務監控解決方案。

3.2 網絡嗅探器

如ethreal,fiddler,以及 http debuger工具,診斷網絡問題。

3.3 Loadrunner troubleshooting

各個環節均可能有問題。 (client,通訊,服務器)

clip_image015

經驗性步驟:

診斷vugen腳本、loadrunner場景設置、客戶端硬件資源是否充足

判斷服務器端各層是否達到資源上限

藉助ethereal等網絡嗅探器判斷c/s通訊問題

3.4 Linux性能分析與調優

深刻了解:

進程/多線程編程

同步機制

Gdb 調試core

內核參數

3.5 Windows性能分析與調優

Windows 其餘計數器

3.6 C語言調用dll 擴展測試腳本

Dll編寫格式:

int __stdcall lr_getLinuxIOwait_end()

{

clnt_destroy(clnt);

}

.def文件

EXPORTS

lr_getLinuxIOwait_end @3

loadrunner調用dll函數:

lr_load_dll("my.dll");

3.7 Apache/jboss/weblogic/oracle性能優化

參見各個產品tuning 文檔

http://httpd.apache.org/docs/2.0/misc/perf-tuning.html

http://httpd.apache.org/docs/1.3/misc/perf-tuning.html

http://edocs.bea.com/wls/docs81/perform/

http://wiki.jboss.org/wiki/Wiki.jsp?page=JBossASTuningSliming

http://www.jboss.org/index.html?module=bb&op=viewforum&f=121

3.8 計算機性能評測研究方向

Ø 相關理論研究(泊松分佈排隊論、MaKov模型、Monte carlo模擬、自類似理論)

Ø 負載特性Workload Characteristic的研究(Commercial Workload/ Technical Workload)

Ø 基準程序Benchmark的研究

Ø 性能指標的研究(全生命週期/高效能/TPO Total Productivity Ownership/SLA Servcie Level Agreement/QoS)

Ø 模擬器的研究(SimpleScalar/SimOS/SandOS)

Ø 測試系統的研究(Benchmark Factory/ServerScope/Benchmark Studio/LoadRunner/Forecast toolset)

Ø 監控系統Perfomance Evaluation(Intel Vtune/ EMon/ TeamQuest Lite/ ServerScope-Monitor/ Grid-View)

Ø 性能評測與體系結構的結合(Computer architecture analysis using workloads)

參見 http://www.cnblogs.com/jackei/archive/2006/11/20/565527.html

3.9 Mercucy performance center

http://www.mercury.com/us/products/performance-center/

clip_image017

clip_image018

4 性能測試書籍

《Microsoft .NET Web應用程序性能測試》

《軟件性能測試過程詳解與案例剖析》

《WEB性能測試實戰》

《J2EE性能測試》

《  LoadRunner性能測試實戰》

5 測試網站

http://www.51tester.cn

轉載自:http://www.ptesting.com/archives/167.html

相關文章
相關標籤/搜索