更新時間:2021-11-17 10:58:57 來源:動力節點 瀏覽731次
Java壓測工具是眾多的Java開發工具中的一種,小編來給大家介紹一下:
ab是apache自帶的壓力測試工具,使用起來非常方便.
安裝
如果安裝了apache, 那么ab已經安裝好了,如果不想安裝apache的話,可以通過以下方式安裝ab
# ubuntu
sudo apt-get install apache2-utils
# centos
yum -y install httpd-tools
壓測
在壓測前,需要關注幾個選項,通過 ab -help 查看
Options are:
-n requests 要執行的請求次數
-c concurrency 并發數量
-s timeout 響應時間
執行
ab -n 1000 -c 100 -s 1 http://127.0.0.1:1080/event?config_name=mysql_config
# 總共100個并發執行1000此請求,超時時間為1s
結果分析
在執行上述測試命令后,得到如下結果,主要關注以下幾個指標:
Failed requests:失敗的請求
Requests per second:也就是常說的QPS, 每秒查詢率,這是一個平均值
Time per request:完成一個請求所花費的時間
Transfer rate: 網絡傳輸速度。 對于大文件的請求測試,這個值很容易成為系統瓶頸所在 要確定該值是不是瓶頸,需要了解客戶端和被測服務器之間的網絡情況,包括網絡帶寬和網卡速度等信息。
Server Software:
Server Hostname: 127.0.0.1
Server Port: 1080
Document Path: /event?config_name=mysql_config
Document Length: 0 bytes
Concurrency Level: 100
Time taken for tests: 0.137 seconds
Complete requests: 1000
Failed requests: 0
Total transferred: 75000 bytes
HTML transferred: 0 bytes
Requests per second: 7275.11 [#/sec] (mean)
Time per request: 13.745 [ms] (mean)
Time per request: 0.137 [ms] (mean, across all concurrent requests)
Transfer rate: 532.84 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 1 1.0 1 5
Processing: 1 12 5.9 11 30
Waiting: 1 11 5.9 11 29
Total: 1 13 6.1 13 30
Percentage of the requests served within a certain time (ms)
50% 13
66% 15
75% 17
80% 18
90% 22
95% 25
98% 28
99% 29
100% 30 (longest request)
wrk 是一款c語言開發的現代的http性能基準測試工具,使用簡單,功能強大。
安裝
安裝可以從github上下載源碼編譯安裝 wrk github地址
壓測
wrk的命令選項并不多,很容易使用
Usage: wrk <options> <url>
Options:
-c, --connections <N> 建立的連接
-d, --duration <T> 執行測試時間
-t, --threads <N> 線程數量
-s, --script <S> 使用lua腳本(非常強大的功能,有興趣可以深入研究)
-H, --header <H> 為每一個HTTP請求添加HTTP頭
--latency 在壓測結束后,打印延遲統計信息
--timeout <T> 超時時間
-v, --version Print version details
Numeric arguments may include a SI unit (1k, 1M, 1G)
Time arguments may include a time unit (2s, 2m, 2h)
wrk -c100 -t10 -d30s http://127.0.0.1:1080/event?config_name=mysql_config
# 10個線程100個連接壓測30s
結果分析
wrk生成的結果報告比較簡潔,主要關注的點和ab差不多
Requests/sec: QPS
Transfer/sec: 網絡傳輸速度
Running 30s test @ http://127.0.0.1:1080/event?config_name=mysql_config
10 threads and 100 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 21.02ms 92.04ms 1.05s 97.79%
Req/Sec 1.22k 229.72 2.38k 75.47%
365483 requests in 30.07s, 26.14MB read
Requests/sec: 12152.63
Transfer/sec: 0.87MB
jmeter 是由java編寫的一個GUI測試工具,功能強大且結果多樣
安裝
安裝可以去 apache jmeter 下載
使用
建立 Plan
建立Thread Group
建立好 Plan后就可以建立 Thread Group 了, 建立方式
選中Plan 后, Edit > Add > Threads > Thread Group
Thread Group 可以設置線程的一些參數,主要是 Number of Threads(users) 和 Loop Count
添加Listener
Listener主要生成一些結果報告,添加方式為
選中Thread Group后 Edit > Add > Listener
可以看到有很多結果報告,我平時主要用到以下幾個結果報告
View Results Tree
Aggregate Report
Graph Results
View Results Table
View Results Tree
這個報告會生成請求樹,點擊可以查看每個請求的信息
Aggregate Report
這個報告會生成請求的聚合統計信息, 主要參數就是QPS, 傳輸速度等
Graph Results
強大的圖形報告結果
圖形結果一些說明
No of Samples(樣本數): 代表向服務器發送的請求數目
Deviation(偏離):代表服務器相應時間變化的數據的分布
Latest Sample(最新樣本): 表示服務器相應最后一個請求的時間
Throughtput(吞吐率):這里是服務器每分鐘對數據的處理量
Average(平均值): 表示總運行的時間除以發送給服務器的請求數
Median(中間值): 代表有一半的服務器時間低于該值,而另一半高于該值
根據圖形結果得到的一些分析
吞吐率起步的時候比較低,隨著請求數量越來越多,吞吐率先增后減
偏離值還不錯,保持一個很平穩的狀態 如果偏離數量隨著請求數量越來越大, 說明服務器越來越不穩定
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習