幾款常用壓測(cè)工具使用

ab

ab是apache自帶的壓力測(cè)試工具,使用起來非常方便.

安裝

如果安裝了apache, 那么ab已經(jīng)安裝好了,如果不想安裝apache的話,可以通過以下方式安裝ab

# ubuntu
sudo apt-get install apache2-utils

# centos
yum -y install httpd-tools 

壓測(cè)

在壓測(cè)前,需要關(guān)注幾個(gè)選項(xiàng),通過 ab -help 查看

Options are:
    -n requests     要執(zhí)行的請(qǐng)求次數(shù)
    -c concurrency  并發(fā)數(shù)量
    -s timeout      響應(yīng)時(shí)間

執(zhí)行

ab -n 1000 -c 100 -s 1 http://127.0.0.1:1080/event?config_name=mysql_config

# 總共100個(gè)并發(fā)執(zhí)行1000此請(qǐng)求,超時(shí)時(shí)間為1s

結(jié)果分析

在執(zhí)行上述測(cè)試命令后,得到如下結(jié)果,主要關(guān)注以下幾個(gè)指標(biāo):

  • Failed requests:失敗的請(qǐng)求
  • Requests per second:也就是常說的QPS, 每秒查詢率,這是一個(gè)平均值
  • Time per request:完成一個(gè)請(qǐng)求所花費(fèi)的時(shí)間
  • Transfer rate: 網(wǎng)絡(luò)傳輸速度。 對(duì)于大文件的請(qǐng)求測(cè)試,這個(gè)值很容易成為系統(tǒng)瓶頸所在 要確定該值是不是瓶頸,需要了解客戶端和被測(cè)服務(wù)器之間的網(wǎng)絡(luò)情況,包括網(wǎng)絡(luò)帶寬和網(wǎng)卡速度等信息。
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

wrk 是一款c語言開發(fā)的現(xiàn)代的http性能基準(zhǔn)測(cè)試工具,使用簡(jiǎn)單,功能強(qiáng)大。

安裝

安裝可以從github上下載源碼編譯安裝 wrk github地址

壓測(cè)

wrk的命令選項(xiàng)并不多,很容易使用

Usage: wrk <options> <url>                            
  Options:                                            
    -c, --connections <N>  建立的連接  
    -d, --duration    <T>  執(zhí)行測(cè)試時(shí)間           
    -t, --threads     <N>  線程數(shù)量   

    -s, --script      <S>  使用lua腳本(非常強(qiáng)大的功能,有興趣可以深入研究)       
    -H, --header      <H>  為每一個(gè)HTTP請(qǐng)求添加HTTP頭        
        --latency          在壓測(cè)結(jié)束后,打印延遲統(tǒng)計(jì)信息   
        --timeout     <T>  超時(shí)時(shí)間    
    -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個(gè)線程100個(gè)連接壓測(cè)30s

結(jié)果分析

wrk生成的結(jié)果報(bào)告比較簡(jiǎn)潔,主要關(guān)注的點(diǎn)和ab差不多

  • Requests/sec: QPS
  • Transfer/sec: 網(wǎng)絡(luò)傳輸速度
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

jmeter 是由java編寫的一個(gè)GUI測(cè)試工具,功能強(qiáng)大且結(jié)果多樣

安裝

安裝可以去 apache jmeter 下載

使用

建立 Plan

image

建立Thread Group

建立好 Plan后就可以建立 Thread Group 了, 建立方式

選中Plan 后, Edit > Add > Threads > Thread Group

封封丷

Thread Group 可以設(shè)置線程的一些參數(shù),主要是 Number of Threads(users) 和 Loop Count

添加Listener

Listener主要生成一些結(jié)果報(bào)告,添加方式為

選中Thread Group后 Edit > Add > Listener

image

可以看到有很多結(jié)果報(bào)告,我平時(shí)主要用到以下幾個(gè)結(jié)果報(bào)告

  • View Results Tree
  • Aggregate Report
  • Graph Results
  • View Results Table

View Results Tree

這個(gè)報(bào)告會(huì)生成請(qǐng)求樹,點(diǎn)擊可以查看每個(gè)請(qǐng)求的信息

封封丷

Aggregate Report

這個(gè)報(bào)告會(huì)生成請(qǐng)求的聚合統(tǒng)計(jì)信息, 主要參數(shù)就是QPS, 傳輸速度等

封封丷

Graph Results

強(qiáng)大的圖形報(bào)告結(jié)果

封封丷

圖形結(jié)果一些說明

  • No of Samples(樣本數(shù)): 代表向服務(wù)器發(fā)送的請(qǐng)求數(shù)目
  • Deviation(偏離):代表服務(wù)器相應(yīng)時(shí)間變化的數(shù)據(jù)的分布
  • Latest Sample(最新樣本): 表示服務(wù)器相應(yīng)最后一個(gè)請(qǐng)求的時(shí)間
  • Throughtput(吞吐率):這里是服務(wù)器每分鐘對(duì)數(shù)據(jù)的處理量
  • Average(平均值): 表示總運(yùn)行的時(shí)間除以發(fā)送給服務(wù)器的請(qǐng)求數(shù)
  • Median(中間值): 代表有一半的服務(wù)器時(shí)間低于該值,而另一半高于該值

根據(jù)圖形結(jié)果得到的一些分析

  1. 吞吐率起步的時(shí)候比較低,隨著請(qǐng)求數(shù)量越來越多,吞吐率先增后減
  2. 偏離值還不錯(cuò),保持一個(gè)很平穩(wěn)的狀態(tài) 如果偏離數(shù)量隨著請(qǐng)求數(shù)量越來越大, 說明服務(wù)器越來越不穩(wěn)定
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容