同時對Web服務器進行10個併發請求,直到進行到100個請求爲止。
ab -n 100 -c 10 http://www.example.com/
2. 時間測試
下面我們使用以下命令來模擬10個用戶在20秒的時間內同時訪問網站:
ab -c 10 -t 20 http://www.example.com/
該命令不包含n標記,但默認情況下包含該標記並且使用t選項時ab將其值設置爲50 000。某些情況下,使用t選項時,最大請求數可能會達到50 000,此時模擬結束。
3. url 參數問題
在windows下直接使用"&"符號添加request參數時,例如:http://localhost:8080/srv.action?method=xxxx¶m1=xxx
會報錯,使用"":如ab -n 10 "http://localhost:8080/srv.action?method=xxxx¶m1=xxx"
4. 如何模擬post文件請求
當需要post文件時,可以使用-p參數
ab -n 10 -c 10 -p home/aa.txt "http://www.example.com/"
在java中可以通過getInputStream()獲取文件內容
InputStream is = null;
is = this.getRequest().getInputStream();
int lens = this.getRequest().getContentLength();
byte[] bytes = new byte[lens];
is.read(bytes);
String resp = new String(bytes, Constants.CHAR_SET_UTF8);
結果說明:
/*整個測試持續的時間*/
Time taken for tests: 3.296875 seconds
/*完成的請求數量*/
Complete requests: 1000
/*失敗的請求數量*/
Failed requests: 0
Write errors: 0
/*保持聯機連接的請求數量。只有在命令行中使用-k,才能看到該屬性值。*/
Keep-Alive requests: 1000
/*整個場景中的網絡傳輸量*/
Total transferred: 1987070 bytes
/*整個場景中的HTML內容傳輸量*/
HTML transferred: 1494000 bytes
/*每秒鐘平均處理的請求數*/
Requests per second: 303.32 [#/sec] (mean)
/*每個線程下的一組請求平均消耗時間*/
Time per request: 329.688 [ms] (mean)
/*併發的每個請求平均消耗時間*/
Time per request: 3.297 [ms] (mean, across all concurrent requests)
/*平均每秒網絡上的流量,可以幫助排除是否存在網絡流量過大導致響應時間延長的問題*/
Transfer rate: 588.44 [Kbytes/sec] received
//平均每秒網絡上的流量,可以幫助排除是否存在網絡流量過大導致響應時間延長的問題
Connection Times (ms)
min mean[+/-sd] median max
Connect: 4 646 1078.7 89 3291
Processing: 165 992 493.1 938 4712
Waiting: 118 934 480.6 882 4554
Total: 813 1638 1338.9 1093 7785
//請求在多少時間內響應
//整個場景中所有請求的響應情況。在場景中每個請求都有一個響應時間,其中50%的用戶響應時間小於1093 毫秒,60% 的用戶響應時間小於1247 毫秒,最大的響應時間小於7785 毫秒
Percentage of the requests served within a certain time (ms)
50% 1093
66% 1247
75% 1373
80% 1493
90% 4061
95% 4398
98% 5608
99% 7368
對failed和length的解讀
若failed類型都是length,請不必擔心,這些請求並沒有真正的失敗,只是返回頁面的長度跟別的不一樣而已。參考:
http://stackoverflow.com/questions/579450/load-testing-with-ab-fake-failed-requests-length
http://stackoverflow.com/questions/1512304/failed-requests-by-length-in-my-apachebench-load-test-result