利用apache 自帶的ab做壓力測試

前言       

       今天在做項目的時候,寫完Web接口閒來無事就突發奇想像去測試一下它實際的併發量。由於原先只接觸過loaderrunner,但是這個軟件已經沉睡在我上一個電腦之中。這個軟件又大,安裝起來又複雜,本來就不是專業的測試團隊,感覺真的是殺雞用牛刀。

       突然想起來 電腦上安裝過apache, apache本來就有自帶測試併發的工具——ab。今天就分享一下 在apache下怎麼去測試併發(今天先用webservice的併發爲例子)。

       首先,先下載一個apache 。網上下載鏈接和安裝案例很多,可以自行去搜索。

 下面進入正題

進入apache的Bin目錄,執行ab-h,如圖:

對應的中文是:

-n requests

在測試會話中所執行的請求個數。默認僅執行一個請求,此時其結果不具有意義。

-c concurrency

一次產生的請求個數。默認是一次一個。

-t timelimit

測試所進行的最大秒數。內部隱含值是"-n 50000"。它可以使對服務器的測試限制在一個固定的總時間以內。默認時,沒有時間限制。

-p POST-file

包含了POST數據的文件。

-T content-type

POST數據時所使用的"Content-type"頭信息。

-v verbosity

設置顯示信息的詳細程度,4或更大值會顯示頭信息,3或更大值可以顯示響應代碼(404,200等),2或更大值可以顯示警告和其他信息。

-w

以HTML表格形式輸出結果。默認時,它是白色背景的兩列寬度的一張表。

-i

執行HEAD請求,而不是GET 。

-x <table>-attributes

設置<table>屬性的字符串。此屬性被填入<table 這裏 > 。

-y <tr>-attributes

設置<tr>屬性的字符串。

-z <td>-attributes

設置<td>屬性的字符串。

-C cookie-name=value

對請求附加一個"Cookie:"頭行。其典型形式是 name=value 的一個參數對。此參數可以重複。

-H custom-header

對請求附加額外的頭信息。此參數的典型形式是一個有效的頭信息行,其中包含了以冒號分隔的字段和值(如:"Accept-Encoding: zip/zop;8bit")。

-A auth-username:password

向服務器提供基本認證信息。用戶名和密碼之間由一個":"隔開,並將被以base64編碼形式發送。無論服務器是否需要(即是否發送了401認證需求代碼),此字符串都會被髮送。

-P proxy-auth-username:password

對一箇中轉代理提供基本認證信息。用戶名和密碼由一個":"隔開,並將被以base64編碼形式發送。無論服務器是否需要(即是否發送了407代理認證需求代碼),此字符串都會被髮送。

-X proxy[:port]

對請求使用代理服務器。

-V

顯示版本號並退出。

-k

啓用KeepAlive功能,即在一個HTTP會話中執行多個請求。默認不啓用KeepAlive功能。

-d

不顯示"percentage served within XX [ms] table"消息(爲以前的版本提供支持)。

-S

不顯示中值和標準偏差值,而且在均值和中值爲標準偏差值的1到2倍時,也不顯示警告或出錯信息。默認時,會顯示最小值/均值/最大值等數值。(爲以前的版本提供支持)

-g gnuplot-file

把所有測試結果寫入一個"gnuplot"或者TSV(以Tab分隔)文件。此文件可以方便地導入到 Gnuplot, IDL, Mathematica, Excel中。其中的第一行爲標題。

-e csv-file

產生一個逗號分隔(CSV)文件,其中包含了處理每個相應百分比請求(從1%到100%)所需要的相應百分比時間(以微秒爲單位)。由於這種格式已經"二進制化",所以比"gnuplot"格式更有用。

-h   顯示使用方法的幫助信息。

基本信息介紹完,實戰演練一下:

webservice 的併發量:

在bin目錄下輸入:

ab -n 500 -c 50  -p C:\1.txt  -T "Content-Type:text/xml;charset=utf-8" -v 10  http://XXX.XXX.XXX.XXX:8080/WebserviceForBsoft/services/JYOLPay?wsdl

//   其中 1.txt中放了要傳輸webservice的數據

<?xml version="1.0" encoding="utf-16"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <soap:Body>
    <ExePro xmlns="http://com.bsoft.hzCityBrain">
      <proName xmlns="">hos_opprescribe</proName>
      <proInstr xmlns="">&lt;interface&gt;&lt;health_evn_id&gt;33010500047024055112019061917083600000000000000003&lt;/health_evn_id&gt;&lt;prescription_code&gt;1474832|11611537&lt;/prescription_code&gt;&lt;/interface&gt;</proInstr>
    </ExePro>
  </soap:Body>
</soap:Envelope>

//這個soap 可供webservice傳輸的可以用soapui或者.net Webservice Studio  如果有需要的可以私聊我,發你們

注:-c 併發請求數量  -n 本次測試總共請求數量  -v 打印出請求和返回信息的級別   -T xml格式的包需特別說明   -p Soap請求的Body部分文件存儲路徑 

上面是併發請求數量50,總共發送 500次,以xml格式傳輸  返回的結果爲

Server Software:        Apache/2.0.55
Server Hostname:        XXX.XXX.XXX.XXX
Server Port:            8080

Document Path:          /WebserviceForBsoft/services/JYOLPay?wsdl
Document Length:        2384 bytes

Concurrency Level:      50 -- 併發個數
Time taken for tests:   20.979199 seconds   -- 請求消耗總時間
Complete requests:      500  -- 總請求數
Failed requests:        0  --錯誤數
Write errors:           0
Total transferred:      1282000 bytes
Total POSTed:           407500
HTML transferred:       1192000 bytes
Requests per second:    23.83 [#/sec] (mean) -- 平均每秒請求數
Time per request:       2097.920 [ms] (mean)  -- 平均每個請求時間
Time per request:       41.958 [ms] (mean, across all concurrent requests) --平均每個請求時間除以併發數
Transfer rate:          59.63 [Kbytes/sec] received  -- 時間傳輸速率
                        18.97 kb/s sent
                        78.64 kb/s total

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.3      0       2
Processing:   244 2076 589.2   1777    3375
Waiting:      205 1648 591.7   1644    3360
Total:        244 2076 589.2   1777    3375

Percentage of the requests served within a certain time (ms)
  50%   1777
  66%   2459
  75%   2493
  80%   2510
  90%   2863
  95%   3121
  98%   3374
  99%   3375
 100%   3375 (longest request)

由於還沒上傳到csdn資源,如果有需要的私聊吧,我發給你們。

謝謝你們支持

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章