淘寶性能測試要點
每臺服務器每秒平均PV量= ( (80%*總PV)/(24*60*60*(9/24)))/服務器數量,
即每臺服務器每秒平均PV量=2.14*(總PV)/* (24*60*60) /服務器數量
最高峰的pv量是1.29倍的平均pv值
性能測試策略:
1.模擬生產線真實的硬件環境。
2.服務器置於同一機房,最大限度避免網絡問題。
3.以PV為切入點,通過模型將其轉換成性能測試可量化的TPS。
4.性能測試數據分為基礎數據和業務數據兩部分,索引和SQL都會被測試到。
5.日誌等級設置成warn,避免大量打印log對性能測試結果的影響。
6.屏蔽ESI緩存,模擬最壞的情況。
7.先單場景,後混合場景,確保每個性能瓶頸都得到調優。
8.拆分問題,隔離分析,定位性能瓶頸。
9.根據性能測試通過標準,來判斷被測性能點通過與否。
10.針對當前無法解決的性能瓶頸,錄入QC域進行跟蹤,並請專家進行風險評估。
性能測試壓力變化模型:
a點:性能期望值
b點:高於期望,系統資源處於臨界點
c點:高於期望,拐點
d點:超過負載,系統崩潰
性能測試:
a點到b點之間的系統性能,以性能預期目標為前提,對系統不斷施加壓力,驗證系統在資源可接受範圍內,是否能達到性能預期。
負載測試:
b點的系統性能,對系統不斷地增加壓力或增加一定壓力下的持續時間,直到系統的某項或多項性能指標達到極限,例如某種資源已經達到飽和狀態等。
壓力測試:
b點到d點之間,超過安全負載的情況下,對系統不斷施加壓力,是通過確定一個系統的瓶頸或不能接收用戶請求的性能點,來獲得系統能提供的最大服務級別的測試。
穩定性測試:
a點到b點之間,被測試系統在特定硬件、軟件、網絡環境條件下,給系統加載一定業務壓力,使系統運行一段較長時間,以此檢測系統是否穩定,一般穩定性測試時間為n*12小時。
監控指標
性能測試通常需要監控的指標包括:
1.服務器 Linux(包括CPU、Memory、Load、I/O)。
2.數據庫:1.Mysql 2.Oracle(緩存命中、索引、單條SQL性能、數據庫線程數、數據池連接數)。
3.中間件:1.Jboss 2. Apache(包括線程數、連接數、日誌)。
4.網絡: 吞吐量、吞吐率。
5.應用: jvm內存、日誌、Full GC頻率。
6.監控工具(LoadRunner):用戶執行情況、場景狀態、事務響應時間、TPS等。
7.測試機資源:CPU、Memory、網絡、磁盤空間。
監控工具
性能測試通常采用下列工具進行監控:
1.Profiler。一個記錄log的類,阿裏巴巴集團自主開發,嵌入到應用代碼中使用。
2.Jstat。監控java 進程GC情況,判斷GC是否正常。
3.JConsole。監控java內存、java CPU使用率、線程執行情況等,需要在JVM參數中進行配置。
4.JMap。監控java程序是否有內存泄漏,需要配合eclipse插件或者MemoryAnalyzer來使用。
5.JProfiler。全面監控每個節點的CPU使用率、內存使用率、響應時間累計值、線程執行情況等,需要在JVM參數中進行配置。
6.Nmon。全面監控linux系統資源使用情況,包括CPU、內存、I/O等,可獨立於應用監控。
7.Valgrind。監控C/C++程序是否存在內存泄漏,基於linux環境。
8.Vmmap和ApplicationVerifier。監控C/C++程序是否存在內存泄漏,基於windows環境。
性能分析
可按以下順序:
中間件瓶頸(apache/jboss參數配置、數據庫參數配置)->
應用服務的debug log ->
應用服務的filter log ->
本應用的性能瓶頸(SQL語句、索引、業務邏輯、線程池設置、算法)->
服務提供者的性能瓶頸 ->
相關聯的底層存儲應用的性能瓶頸
分析標準
通過性能指標的表現形式,分析性能是否穩定。比如:
1.響應時間是否符合性能預期,表現是否穩定。
2.應用日誌中,超時的概率,是否在可接受的範圍之內。
3.TPS維持在多大的範圍內,是否有波形出現,標準差有多少,是否符合預期。
4.服務器CPU、內存、load是否在合理的範圍內,等等。
分析工具
對於部分性能指標,可借助自動分析工具,統計出數據的總體趨勢:
1.LoadRunner analysis
LoadRunner analysis是loadrunner的一個部件,用於將運行過程中所采集到的數據生成報表,主要用於采集TPS、響應時間、服務器資源使用情況等變化趨勢。
2.Memory Analyzer
Memory Analyzer工具可以解析Jmap dump出來的內存信息,查找是否有內存泄漏。
3.nmon_analyser
nmon工具可以采集服務器的資源信息。列出CPU、MEM、網絡、I/O等資源指標的使用情況。
淘寶性能測試要點