介紹
今天給大家介紹一款開源的性能測試工具 wrk,簡單易用,沒有Load Runner那么復雜,他和 apache benchmark(ab)同屬于性能測試工具,但是比 ab 功能更加強大,并且可以支持lua腳本來創建復雜的測試場景。
wrk 的一個很好的特性就是能用很少的線程壓出很大的并發量, 原因是它使用了一些操作系統特定的高性能 I/O 機制, 比如 select, epoll, kqueue 等。 其實它是復用了 redis 的 ae 異步事件驅動框架. 確切的說 ae 事件驅動框架并不是 redis 發明的, 它來至于 Tcl的解釋器 jim, 這個小巧高效的框架, 因為被 redis 采用而更多的被大家所熟知.
wrk GitHub 源碼:https://github.com/wg/wrk
安裝
wrk只能運行于 Unix 類的系統上,也只能在這些系統上便宜,所以我們需要一個Linux或者macOs。
不得不說,使用了 Win10之后方便很多。
必備條件:
- Win10 RS及以上版本
- 啟用Ubuntu子系統
1、Win10 系統通過bash
命令,切換到Ubuntu子系統。
然后需要安裝一下編譯工具,通過運行下面命令來安裝工具:
# 安裝 make 工具
sudo apt-get install make
# 安裝 gcc編譯環境
sudo apt-get install build-essential
安裝 gcc 編譯環境的時候最好掛一下VPN,速度會快些。
2、安裝完成之后使用 git 下載 wrk 的源碼到本地:
https://github.com/wg/wrk.git
3、切換到git的wrk目錄,然后使用make
命令:
cd /mnt/盤符/wrk目錄
make
編譯完成之后,目錄下面會多一個 wrk 的文件。
測試
使用以下命令來測試一下:
./wrk -c 1 -t 1 -d 1 http://www.baidu.com
簡單說一下wrk里面各個參數什么意思?
- -t 需要模擬的線程數
- -c 需要模擬的連接數
- --timeout 超時的時間
- -d 測試的持續時間
結果:
- Latency:響應時間
Req/Sec:每個線程每秒鐘的完成的請求數
- Avg:平均
- Max:最大
- Stdev:標準差
+/- Stdev: 正負一個標準差占比
標準差如果太大說明樣本本身離散程度比較高. 有可能系統性能波動很大.
如果想看響應時間的分布情況可以加上--latency參數
我們的模擬測試的時候需要注意,一般線程數不宜過多,核數的2到4倍足夠了。 多了反而因為線程切換過多造成效率降低, 因為 wrk 不是使用每個連接一個線程的模型, 而是通過異步網絡 I/O 提升并發量。 所以網絡通信不會阻塞線程執行,這也是 wrk 可以用很少的線程模擬大量網路連接的原因。
在 wrk 的測試結果中,有一項為Requests/sec
,我們一般稱之為QPS(每秒請求數),這是一項壓力測試的性能指標,通過這個參數我們可以看出應用程序的吞吐量。
總結
關于 wrk 已經介紹完畢了,之所以寫這篇文章的目的是為了接下來對 ASP.NET Core做一個性能對比測試(Java,NodeJS,Python等)時需要用到該工具,敬請大家期待。
本文地址:http://www.cnblogs.com/savorboard/p/wrk.html
作者博客:Savorboard
歡迎轉載,請在明顯位置給出出處及鏈接
文章列表
![]() |
不含病毒。www.avast.com |