XXX壓力測試報告
時間:2015-08-04 測試人員:xxx
目錄
XXX壓力測試報告... 1
一 測試內容... 2
二 測試方法... 2
三 測試目標... 2
四 測試環境... 2
五 系統部署... 3
5.1 物理部署... 3
5.2 網絡訪問... 3
六 性能測試結果與分析... 4
6.1 jmeter集群壓測(5進程-每個進行10線程)... 4
6.2 jmeter集群壓測(10進程-每個進行5線程)... 7
6.3 jmeter集群壓測(10進程-每個進行10線程)... 11
七 結果匯總分析... 13
一 測試內容
本次測試是針對xxx系統進行的壓力測試,在交易接口中,只對交易接口進行壓力測試,其中涵蓋數據驗簽與簽名功能。
二 測試方法
本次采用apache的開源測試工具jmeter,采用本地動態拼裝請求數據並通過http協議post方式發送支付請求。並采用650張測試銀行卡測試,其中大概有30張存在“無足夠的存款”和“受限制的卡”情況。
三 測試目標
1) 獲取在單機部署情況下最大TPS值
2) 是否可以達到原來預期值TPS:50
四 測試環境
環境 |
機器型號 |
操作系統 |
硬件cpu |
硬件mem |
客戶端 |
server2008虛擬機 |
windows |
32核 |
32G |
服務端 |
HP DL580 |
linux |
64核 |
126G |
由於客戶端與服務端的機器性能優秀,暫不會對壓測形成瓶頸,該方面影響可以忽略
五 系統部署
5.1 物理部署
5.2 網絡訪問
六 性能測試結果與分析
6.1 jmeter集群壓測(5進程-每個進行10線程)
啟5個進程,每個進程啟動10個線程,並發為50,項目日志開啟info狀態
6.1.1 聚合報告
Label |
#Samples |
Average |
Median |
90%Line |
95%Line |
99%Line |
Min |
Max |
Error% |
TPS |
KB/sec |
1 |
22805 |
547 |
366 |
512 |
636 |
5218 |
150 |
30003 |
0.26 |
65.3 |
96.5 |
2 |
33605 |
519 |
362 |
503 |
618 |
5200 |
150 |
30003 |
0.21 |
66.5 |
98.5 |
3 |
43505 |
536 |
365 |
508 |
621 |
5210 |
150 |
34899 |
0.26 |
65.6 |
97.1 |
4 |
48205 |
527 |
365 |
507 |
618 |
5206 |
150 |
34899 |
0.24 |
65.1 |
96.3 |
5 |
49005 |
535 |
364 |
507 |
616 |
5211 |
150 |
34899 |
0.27 |
63.9 |
94.5 |
6 |
49901 |
532 |
364 |
505 |
614 |
5207 |
150 |
34899 |
0.27 |
61.0 |
90.2 |
7 |
50000 |
531 |
363 |
504 |
613 |
5207 |
150 |
34899 |
0.27% |
60.9 |
90.1 |
6.1.2 每秒的響應分布圖
6.1.3 響應時間分布圖
6.1.4 請求失敗與成功分布圖
6.1.5 結果分析
總筆數 |
Jmeter錯誤筆數 |
請求前置響應超長筆數 |
服務本地處理超長筆數和404 |
50000 |
135 |
120 |
15 |
- 在使用jmeter壓測請求被F5轉發到apache server代理上,由於交易處理過程中處理時間過長造成長時間無響應,代理返回502 Proxy Error錯誤。
- 其中請求前置響應超長筆數在向前置獲取結果返回的耗時超過3分鍾,其余耗時均低於5s,前置接收到的晚,初步判定網絡堵塞
- 本地業務處理的錯誤原因為簽名、驗簽、獲取數據及請求時404等
6.2 jmeter集群壓測(10進程-每個進行5線程)
啟10個進程,每個進程啟動5個線程,並發為50,項目日志開啟info狀態
6.2.1 聚合報告
Label |
#Samples |
Average |
Median |
90%Line |
95%Line |
99%Line |
Min |
Max |
Error% |
TPS |
KB/sec |
1 |
11010 |
555 |
348 |
495 |
605 |
5196 |
148 |
30003 |
0.26 |
68.7 |
101.5 |
2 |
28910 |
507 |
333 |
473 |
568 |
5178 |
55 |
30015 |
0.25 |
76.3 |
121.9 |
3 |
36310 |
501 |
332 |
475 |
575 |
5176 |
55 |
30031 |
0.24 |
77.1 |
114.0 |
4 |
46310 |
485 |
331 |
466 |
557 |
5172 |
55 |
30031 |
0.21 |
78.6 |
116.3 |
5 |
50000 |
478 |
326 |
460 |
551 |
5166 |
55 |
30031 |
0.21 |
72.1 |
106.7 |
6.2.2 每秒的響應分布圖
6.2.3 響應時間分布圖
6.2.4 請求失敗與成功分布圖
6.2.5 應用系統狀態
6.2.6 結果分析
總筆數 |
Jmeter錯誤筆數 |
請求前置響應超長筆數 |
服務本地處理超長筆數和404 |
50000 |
105 |
92 |
13 |
1 在使用jmeter壓測請求被F5轉發到apache server代理上,由於交易處理過程中處理時間過長造成長時間無響應,代理返回502 Proxy Error錯誤。
2 其中請求前置響應超長筆數在向前置獲取結果返回的耗時超過3分鍾,其余耗時均低於5s,前置接收到的晚,初步判定網絡堵塞
3 本地業務處理的錯誤原因為簽名、驗簽、獲取數據及請求時404等
6.3 jmeter集群壓測(10進程-每個進行10線程)
啟10個進程,每個進程啟動10個線程,並發為100,項目日志開啟info狀態
6.3.1 聚合報告
Label |
#Samples |
Average |
Median |
90%Line |
95%Line |
99%Line |
Min |
Max |
Error% |
TPS |
KB/sec |
1 |
50000 |
1219 |
896 |
1665 |
2692 |
5808 |
209 |
38306 |
0.30 |
68.0 |
100.5 |
6.3.2 每秒的響應分布圖
6.3.3 響應時間分布圖
6.3.4 請求失敗與成功分布圖
6.3.5 結果分析
總筆數 |
Jmeter錯誤筆數 |
請求前置響應超長筆數 |
服務本地處理超長筆數和404 |
50000 |
150 |
119 |
31 |
1 在使用jmeter壓測請求被F5轉發到apache server代理上,由於交易處理過程中處理時間過長造成長時間無響應,代理返回502 Proxy Error錯誤。
2 其中請求前置響應超長筆數在向前置獲取結果返回的耗時超過3分鍾,其余耗時均低於5s,前置接收到的晚,初步判定網絡堵塞
3 本地業務處理的錯誤原因為簽名、驗簽、獲取數據及請求時404等
6.4 jmeter集群壓測(30進程-每個進行5線程)
啟30個進程,每個進程啟動5個線程,並發為150,項目日志開啟info狀態
6.4.1 聚合報告
Label |
#Samples |
Average |
Median |
90%Line |
95%Line |
99%Line |
Min |
Max |
Error% |
TPS |
KB/sec |
1 |
150000 |
1473 |
1924 |
1733 |
1959 |
6156 |
222 |
35107 |
0.21 |
89.5 |
132.2 |
6.4.2 每秒的響應分布圖
6.4.3 響應時間分布圖
6.4.4 應用系統狀態
6.4.5 客戶端系統狀態
6.4.6 結果分析
暫未統計
6.5 jmeter集群壓測(20進程-每個進行5線程)
啟20個進程,每個進程啟動5個線程,並發為100,項目日志開啟info狀態,超時時間2000ms
6.5.1 聚合報告
Label |
#Samples |
Average |
Median |
90%Line |
95%Line |
99%Line |
Min |
Max |
Error% |
TPS |
KB/sec |
1 |
200000 |
867 |
722 |
1073 |
1296 |
5674 |
1 |
10053 |
0.84 |
92.8 |
138.6 |
6.5.2 每秒的響應分布圖
6.5.3 響應時間分布圖
6.5.4 請求失敗與成功分布圖
6.5.5 結果分析
總筆數 |
Jmeter錯誤筆數 |
TPS |
100000 |
730 |
98.0 |
1 由於本地客戶端限定2000毫秒不響應就認為失敗,所以失敗率偏高
七 結果匯總分析
Label |
#Samples |
Average |
Median |
90%Line |
95%Line |
進程 |
線程 |
並發 |
Error% |
TPS |
KB/sec |
50並發 |
50000 |
531 |
363 |
504 |
613 |
5 |
10 |
50 |
0.27% |
60.9 |
90.1 |
50並發 |
50000 |
478 |
326 |
460 |
551 |
10 |
5 |
50 |
0.21 |
72.1 |
106.7 |
100並發 |
50000 |
1219 |
896 |
1665 |
2692 |
10 |
10 |
100 |
0.30 |
68.0 |
100.5 |
150並發 |
150000 |
1473 |
1924 |
1733 |
1959 |
30 |
5 |
150 |
0.21 |
89.5 |
132.2 |
100並發 |
200000 |
867 |
722 |
1073 |
1296 |
20 |
5 |
100 |
0.84 |
92.8 |
138.6 |
使用jmeter壓測時,如果使用1個進程開多個線程進行壓測,一個進程很難快速處理多個線程,造成本地處理浪費大量時間用於調度,最終壓力上不去。
當采用集群壓測時,啟用多個進程調度少量線程,解決本地耗時,TPS明顯提升。
在啟動10個進程50線程時效果最佳,符合交易每秒鍾處理的交易筆數,當提升並發到100時,交易響應時間明顯提升。
壓測過程中出現的錯誤主要有:
1、 請求資源404錯誤
2、 請求前置網絡堵塞,每次均為3分鍾
3、 本地簽名、驗簽、獲取數據耗時過長
最終壓測結果TPS:90-100時可保證響應時間不超過2s