http效能測試工具wrk原始碼學習之開篇

2022-03-08 13:37:10 字數 1098 閱讀 3590

1、前言

最近工作需要測試nginx反向**的效能,於是找了一些http測試工具,例如經典的apache的ab、siege、wrk。wrk使用多執行緒事件驅動方式,支援lua指令碼擴充套件。關於wrk介紹可以參考:測試http的效能,主要關注的是qps(每秒處理的請求數目),qps越高說明web站點的效能越好。測試這個引數,就需要工具能夠發生多個連線。涉及到網路程式設計的一些知識,如何同時使用connect建立多個連線,如何控制connect超時,如何判斷fd可讀還是可寫。linux網路套接字預設都是阻塞的,使用阻塞的套接字很難實現大量的請求,需要使用非阻塞,快速建立連線,輪詢連線的狀態來出來網路事件。

自己對這些地方不求甚解,如有藉此機會分析一下wrk的原始碼,如何傳送大量的併發連線,學習一下常見的網路程式設計框架。

2、wrk的基本介紹

wrk支援多執行緒,每個執行緒之間是獨立的,執行緒中使用經典的事件驅動模型來建立連線、處理連線,wrk支援引數配置,主要是引數如下:

wrk使用如下:

3、wrk使用技術介紹

wrk是乙個典型的linux客戶端網路程式,能夠建立和處理大量的併發連線,使用的技術有多執行緒,網路程式設計、http協議解析、ssl協議,lua指令碼引擎。wrk使用了redis的事件驅動庫,關於事件驅動模型(一般是由事件收集器事件傳送器事件處理器三部分組成基本單元組成),可以參考:

事件驅動模型是為了解決傳統伺服器與網路工作負載的需求的不匹配,實現高度可伸縮伺服器,並降低記憶體開銷。事情驅動模型更改了連線到伺服器的方式。所有的連線都由事件迴圈管理,每個連線觸發乙個在事件迴圈程序中執行的事件,而不是為每個連線生成乙個新的 os 執行緒,並為其分配一些配套記憶體。因此不用擔心出現死鎖,而且不會直接呼叫阻塞資源,而採用非同步的方式來實現非阻塞式i/o。通過事件驅動模型是的在相同配置的伺服器能接受更多的併發請求,實現可伸縮的伺服器。

接下來需要深入學習這個地方。

安裝HTTP壓力效能測試工具ABSender

依賴包 absender依賴於apr包 apache portable runtime 和apr util包。下文將向您介紹如何安裝這些依賴包及安裝absender。安裝步驟 apr庫安裝 1.解壓apr包 tar zxvf apr 1.4.6.tar.gz 2.進入所解壓出來的依賴包的工作目錄 c...

http測試工具 httpbin

httpbin 是乙個使用 python flask 編寫的 http http request response service。該服務主要用於測試 http 庫。你可以向他傳送請求,然後他會按照指定的規則將你的請求返回。這個類似於echo伺服器,但是功能又比它要更強大一些。httpbin支援ht...

Mysql效能測試工具

一 mysqlslap測試 mysqlslap是mysql自帶的乙個測試工具。具體的用法可以通過man獲得。比較常用的options解釋如下 concurrency 代表併發數量,多個可以用逗號隔開,當然你也可以用自己的分隔符隔開,這個時候要用到 delimiter開關。engines 代表要測試的...