close
文章出處

介紹

今天給大家介紹一款開源的性能測試工具 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,速度會快些。
image

2、安裝完成之后使用 git 下載 wrk 的源碼到本地:

https://github.com/wg/wrk.git

3、切換到git的wrk目錄,然后使用make命令:

cd /mnt/盤符/wrk目錄

make

image

編譯完成之后,目錄下面會多一個 wrk 的文件。

image

測試

使用以下命令來測試一下:

./wrk -c 1 -t 1 -d 1 http://www.baidu.com

image

簡單說一下wrk里面各個參數什么意思?

  • -t 需要模擬的線程數
  • -c 需要模擬的連接數
  • --timeout 超時的時間
  • -d 測試的持續時間

結果:

  • Latency:響應時間
  • Req/Sec:每個線程每秒鐘的完成的請求數

  • Avg:平均
  • Max:最大
  • Stdev:標準差
  • +/- Stdev: 正負一個標準差占比

標準差如果太大說明樣本本身離散程度比較高. 有可能系統性能波動很大.

如果想看響應時間的分布情況可以加上--latency參數
image

我們的模擬測試的時候需要注意,一般線程數不宜過多,核數的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
arrow
arrow
    全站熱搜

    AutoPoster 發表在 痞客邦 留言(0) 人氣()