UbuntuLinux系統下安裝wrk和使用

前言

wrk是一個用c語言寫的壓力測試工具,非常有用,但是ubuntu的軟件倉庫沒有收錄wrk,需要我們自己進行編譯和安裝,最近在學習一些性能測試、性能優化方面的知識,需要使用到這個強有力的工具,故此記錄安裝和使用的過程。

安裝

首先若是沒有安裝編譯工具那么就得先安裝一下:

# 安裝 make 工具
sudo apt-get install make
 
# 安裝 gcc編譯環境
sudo apt-get install build-essential

之后安裝git

sudo apt-get install git

從git上拉源碼

git clone git@github.com:wg/wrk.git

要是沒有梯子等加速工具可以使用gitee

git clone git@gitee.com:ponponon/wrk.git

安裝openssl庫

sudo apt-get install libssl-dev

使用make編譯源碼

cd wrk
make

make之后在wrk目錄下就可以使用./wrk指令了,不過為了全局能使用,可以將其添加到path

# 把生成的wrk移到一個PATH目錄下面, 比如
sudo cp wrk /usr/local/bin

wrk一個特性就是用很少的線程可以壓出很大的并發量,原因是啥它使用了一些操作系統特定的高性能io機制,例如select,epoll等。

使用一個簡單的性能測試:

wrk -t12 -c100 -d30s http://www.baidu.com ?

可以看到如下輸出:

Running 30s test @ http://www.baidu.com12 threads and 100 connectionsThread Stats ? Avg ? ?  Stdev ? ? Max ? +/- StdevLatency ?  41.00ms ? 12.53ms 421.23ms ? 92.02%Req/Sec ? 173.37 ? ? 51.53 ? 260.00 ? ? 75.17%23100 requests in 30.10s, 231.29MB readSocket errors: connect 0, read 1888, write 0, timeout 0
Requests/sec: ?  767.48
Transfer/sec: ? ?  7.68MB

12 threads and 100 connections

用12個線程模擬100個連接.

對應的參數 -t 和 -c 可以控制這兩個參數.

wrk中各個參數:

  • -t 需要模擬的線程數

  • -c 需要模擬的連接數

  • --timeout 超時的時間

  • -d 測試的持續時間

結果中:

  • Latency:響應時間

  • Req/Sec:每個線程每秒鐘的完成的請求數

  • Avg:平均

  • Stdev:標準差

  • Max:最大

  • +/- Stdev: 正負一個標準差占比

  • Requests/sec:QPS(每秒請求數),這是一項壓力測試的性能指標,通過這個參數我們可以看出應用程序的吞吐量。

  • Transfer/sec:每秒傳輸的數據量

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

wrk -t12 -c100 -d30s -T30s --latency http://www.baidu.com ?
Running 30s test @ http://www.baidu.com12 threads and 100 connectionsThread Stats ? Avg ? ?  Stdev ? ? Max ? +/- StdevLatency ?  41.46ms ? 20.81ms 453.31ms ? 97.90%Req/Sec ? 169.27 ? ? 57.92 ? 250.00 ? ? 75.02%Latency Distribution50% ? 38.59ms75% ? 42.03ms90% ? 46.62ms99% ? 96.43ms23100 requests in 30.03s, 231.29MB readSocket errors: connect 0, read 1277, write 0, timeout 0
Requests/sec: ?  769.24
Transfer/sec: ? ?  7.70MB

可以看到50%在38ms的量級,很可以

使用 wrk 測試 nginx

wrk http://192.168.31.203 ? ? ? ? ? ? ? ? ? ? ? ? ? ? 
Running 10s test @ http://192.168.31.2032 threads and 10 connections
?Thread Stats ? Avg ? ?  Stdev ? ? Max ? +/- StdevLatency ? 657.87us ?761.70us ?19.66ms ? 97.90%Req/Sec ? ? 8.48k ? 743.41 ? ? 9.74k ? ?83.00%168665 requests in 10.00s, 138.16MB read
Requests/sec: ?16865.61
Transfer/sec: ? ? 13.82MB

使用 wrk 測試 gunicorn

wrk http://192.168.31.203:63000/upload/                     
Running 10s test @ http://192.168.31.203:63000/upload/2 threads and 10 connectionsThread Stats   Avg      Stdev     Max   +/- StdevLatency    10.91ms    7.41ms  93.90ms   79.23%Req/Sec   486.49     92.10   797.00     64.50%9692 requests in 10.01s, 3.47MB readNon-2xx or 3xx responses: 9692
Requests/sec:    968.38
Transfer/sec:    354.63KB

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/13650.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/13650.shtml
英文地址,請注明出處:http://en.pswp.cn/web/13650.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Windows安全應急--在應急響應中需要知道的信息

在網絡安全事件發生后,一般是要去客戶現場排查問題的, 那么要想解決問題,信息的完整性決定了這次任務的成敗。。 1. 你需要知道的: 先讓客戶梳理一遍事情的起因經過結果 詢問客戶需要解決的問題 了解客戶的網絡環境&#xff08…

【ARM 嵌入式 C 入門及漸進 6.2 -- ARMv8 C 內嵌匯編讀系統寄存器的函數實現】

請閱讀【嵌入式開發學習必備專欄】 文章目錄 ARMv8 C 內嵌匯編讀系統寄存器 ARMv8 C 內嵌匯編讀系統寄存器 要在ARMv8架構中通過C代碼和內嵌匯編來讀取系統寄存器s3_0_c15_c5_5的值,并將其返回,可以按照以下方式實現system_read_reg函數: #…

buuctf的RSA(二)

1.RSA 知道 flag.enc 和 pub.key,典型的加密、解密 將pub,key 改為pub.txt 打開后發現公鑰 在RSA公私鑰分解 Exponent、Modulus,Rsa公私鑰指數、系數(模數)分解--查錯網 進行解密 得到e65537 n8693448229604811919066606200349480058890565…

innerText和innerHTML的區別

innerHTML和innerText都是元素的屬性,通過修改這個元素的屬性可以達到修改元素內容的目的。但是二者之間略有不同。具體來說,它們的區別如下: innerHTML可以獲取或設置元素內部的HTML內容,包括HTML標簽,而innerText則…

LeetCode 79.單詞搜索

原題鏈接:. - 力扣(LeetCode) 給定一個 m x n 二維字符網格 board 和一個字符串單詞 word 。如果 word 存在于網格中,返回 true ;否則,返回 false 。 單詞必須按照字母順序,通過相鄰的單元格內…

若依前后端分離版本-前后端交互整理

ruoyi-ui與后端交互 方法一:表單 使用 headers: {Content-Type:application/x-www-form-urlencoded}, ruoyi-ui的vue中 //ruoyi-ui的vue中定義 formData: {a: 111,b: 111,c: 1,}, //vue中方法調用 outBound() { empty(this.formData).…

6款網頁表白代碼6(附帶源碼)

6款網頁表白代碼6 前言效果圖及部分源碼1.愛心倒計時2.一起看星星3.愛心4.愛心(有鼠標移動特效)5.愛心(高級效果)6.愛心(3D效果) 領取源碼下期更新預報 前言 大部分人都有喜歡的人,學會這些表白…

藍橋杯物聯網競賽_STM32L071KBU6_關于sizo of函數產生的BUG

首先現象是我在用LORA發送信息的時候,左邊顯示長度是8而右邊接收到的數據長度卻是4 我以為是OLED顯示屏壞了,又或者是我想搞創新用了const char* 類型強制轉換數據的原因,結果發現都不是 void Function_SendMsg( unsigned char* data){unsi…

微軟Edge

微軟Edge瀏覽器概述 功能介紹 微軟Edge是一款基于Chromium開源項目的網頁瀏覽器,旨在提供更快的網頁加載速度、更高的安全性和更好的用戶體驗。它支持多種操作系統,包括Windows、macOS、Android和iOS,能夠滿足不同用戶的需求。Edge瀏覽器擁…

趕緊收藏!2024 年最常見 20道 Redis面試題(三)

上一篇地址:趕緊收藏!2024 年最常見 20道 Redis面試題(二)-CSDN博客 五、Redis的持久化機制是什么? Redis 是一個高性能的鍵值存儲系統,支持多種類型的數據結構,如字符串、哈希、列表、集合、…

python數據類型之字符串

目錄 1.字符串概念和注意事項 2.字符串內置函數 3.字符串的索引、切片和遍歷 4.字符串運算符 5.字符串常用方法 性質判斷 開頭結尾判斷 是否存在某個子串 大小寫等格式轉化 子串替換 刪除兩端空白字符 格式化字符串 分割與合并 6.字符串模板 7.exec 函數 8.字符…

【Linux】-Zookeeper安裝部署[17]

簡介 apache ZooKeeper是一個分布式的,開放源碼的分布式應用程序協調服務,是Hadoop和Hbase的重要組件。它是一個為分布式應用提供一致性服務的軟件,提供的功能包括:配置維護、域名服務、分布式同步、組服務等。 除了為Hadoop和H…

2024最新 Jenkins + Docker 實戰教程(四) - 編寫自己的Springboot項目實現自動化部署

😄 19年之后由于某些原因斷更了三年,23年重新揚帆起航,推出更多優質博文,希望大家多多支持~ 🌷 古之立大事者,不惟有超世之才,亦必有堅忍不拔之志 🎐 個人CSND主頁——Mi…

VMware Num Lock 總自動切換的問題解決

VMware Num Lock 總自動切換的問題解決 0. 問題描述1. 解決方法 0. 問題描述 使用 VMware 虛擬機時,鼠標在 VMware 和主機之間切換時,總是顯示 “Num Lock 開” 和 “Num Lock 關” 的提示框。 1. 解決方法 在 VMware 系統中,按 fn num 統…

0407放大電路的頻率響應

放大電路的頻率響應 單時間常數RC電路的頻率響應中頻響應高頻響應低頻響應全頻域響應 放大電路頻率響應概述1. 直接耦合放大電路頻域響應阻容耦合放大電路頻域響應 4.7.1 單時間常數RC電路的頻率響應 4.7.2 放大電路頻率響應概述 4.7.3 單級共射極放大電路的頻率響應 4.7.4 單級…

TOSHIBA UTLH21 屬于Unifi NV系列

TOSHIBA UTLH21 是東芝推出的一款工業控制器,屬于Unifi NV系列。 這款控制器代表了東芝在工業自動化領域的一次重要進步,它在功能和性能上都超越了現有的V系列控制器。以下是UTLH21的一些主要特點: 高速邏輯與控制能力:UTLH21具…

Spring框架中獲取方法參數名稱:DefaultParameterNameDiscoverer

DefaultParameterNameDiscoverer 是Spring框架中用于獲取方法參數名稱的一個類。在Java中,方法的參數名稱通常在編譯時會丟失,因為Java字節碼并不強制要求保留這些信息。Spring提供了一種機制來恢復這些參數名稱,這就是通過DefaultParameterN…

IT行業的現狀與未來趨勢

這里寫目錄標題 一、引言二、IT行業的現狀三、IT行業面臨的挑戰四、IT行業的未來趨勢五、結論 一、引言 信息技術(IT)行業在過去幾十年中經歷了飛速發展,從早期的計算機硬件和軟件開發,到如今涵蓋云計算、人工智能、大數據、物聯…

深度學習之基于Django+Tensorflow卷積神經網絡實時口罩檢測系統

歡迎大家點贊、收藏、關注、評論啦 ,由于篇幅有限,只展示了部分核心代碼。 文章目錄 一項目簡介 二、功能三、系統四. 總結 一項目簡介 一、項目背景 隨著全球疫情的持續,佩戴口罩成為了公眾日常生活中不可或缺的一部分。特別是在人員密集的…

【python】python社交交友平臺系統設計與實現(源碼+數據庫)【獨一無二】

👉博__主👈:米碼收割機 👉技__能👈:C/Python語言 👉公眾號👈:測試開發自動化【獲取源碼商業合作】 👉榮__譽👈:阿里云博客專家博主、5…