天天看點

利用apache ab指令完成性能測試

ab是什麼

ab的全稱是ApacheBench,是 Apache 附帶的一個小工具,專門用于 HTTP Server 的benchmark testing,可以同時模拟多個并發請求。

ab的用法

ab 的用法是:ab [options] [http://]hostname[:port]/path

例如:

ab -n 1000 -c 200 http://xqtesting.blog.51cto.com/

上例表示總共通路小強的部落格這個腳本1000次,200并發同時執行。

ab -n 1000 -c 100 -w http://xqtesting.blog.51cto.com/ >>/root/xiaoqiang.html

上面的測試用例表示100并發的情況下,共測試通路index.php腳本1000次,并将測試結果儲存到xiaoqiang.html檔案中。

ab常用參數的介紹:

-n :總共的請求執行數,預設是1;

-c: 并發數,預設是1;

-t:測試所進行的總時間,秒為機關,預設50000s

ab結果分析

運作上面指令之後的結果太多了?看不懂?不知道看哪個?每個是什麼意思?你心中又有十萬個為什麼了!打住,我們隻需關注如下幾個名額就好:

  • Requests per second (mean) 相當于 LR 中的 每秒事務數 
  • Time per request (mean)相當于 LR 中的 平均事務響應時間
  • Percentage of the requests served within a certain time (ms)

如何傳遞參數?

ab -n 1 -c 1 "http://localhost/xiaoqiangshop/goods.php?id=20"

一定要有雙引号

ab可以完成post操作嗎?

ab -n 10 -c 10 -k -p "login.ab" -T "application/x-www-form-urlencoded" "http://localhost/xiaoqiangshop/user.php"

-p 檔案中是post的内容(可以是json格式,可以是&格式)

-T 指定post檔案的編碼方式使用urlencode

-k keepalive連接配接

login.ab中的内容為登入所需要的資訊組合,如下:

username=xiaoqiang&password=123123&act=act_login

注意事項

  • 可以利用ab完成不複雜的性能測試,或者造資料,比較适用于單一URL的測試
  • ab判斷成功與否隻通過2xx的狀态碼作為依據,不接收伺服器的傳回值,但lr卻接收伺服器完整的傳回。是以在同樣的響應時間下,ab測試支援的并發數會大于lr,tps也會大于lr。
  • ab運作并發的時候和所在運作機器上的cpu顆數有關,越多則并發越大。是以在linux下支援的并發大于在Windows下
  • 大并發下資料不準,更多的是看ab本身的性能了而不是服務端的性能

繼續閱讀