ab壓力測試工具

2021-07-06 02:19:44 字數 1060 閱讀 7873

即ab的主要邏輯包含在test方法中。test方法首先進行了一些全域性的初始化工作。其中,最重要的乙個資料結構是陣列struct connection con[c],代表同時存在的c個客戶端連線。struct connection的結構如下:

struct connection

start_connect首先建立乙個socket埠並將其設定為非阻塞,這樣呼叫connect時就會立即返回einprogress錯誤,但tcp三步握手仍在後台進行。通過這種方式,就可以同時發起多個連線,從而模擬多個客戶端請求伺服器的場景。start_connect的主要邏輯如下:

re = apr_connect(sock);

if(re == einprogress)

else if(re == success)

else

返回test 方法,在建立完成初始的連線之後,test開始使用epoll來監聽連線完成、有新的響應資料等事件並進行處理:

dowhile (status == eintr);

for(i = 0;i < n;++i)

if(rv & arp_pollout)

else}}

}

}while(未完成)

上文中提到的write_request和read_connection分別為向伺服器發出請求以及從伺服器讀取響應資料的方法。其中write_request方法會將預先建立好的http請求的內容一次性傳送出去;而read_connection則嘗試讀取、解析伺服器端響應並在讀取到eof後呼叫close_connection方法關閉當前連線。

最後, close_connection方法除了關閉socket埠、記錄結果外,如果請求數未達到要求時還會復用要關閉的struct connection,重新呼叫start_connect發起連線請求,從而推進測試任務。

在一般的作業系統中,單個程序能夠新建的執行緒數量是有限的。通過使用非同步connect的方式代替多執行緒,ab可以提高客戶端能夠達到的併發程度,從而提高測試能力。雖然ab本身是針對http伺服器的測試工具,但這種設計可以被用來對任何伺服器端程式進行併發性測試。

ab壓力測試工具

系統centos6.8 1 安裝ab 直接安裝好阿帕奇同時也安裝好了ab工具 不想安裝阿帕奇時可使用如下命令 2 ab命令引數解釋 n 在測試會話中所執行的請求個數。預設時,僅執行乙個請求。c 一次產生的請求個數。預設是一次乙個。t 測試所進行的最大秒數。其內部隱含值是 n 50000,它可以使對伺...

AB壓力測試工具

吞吐率 requests per second 概念 伺服器併發處理能力的量化描述,單位是reqs s,指的是某個併發使用者數下單位時間內處理的請求數。某個併發使用者數下單位時間內能處理的最大請求數,稱之為最大吞吐率。計算公式 總請求數 處理完成這些請求數所花費的時間,即 request per s...

ab壓力測試工具

1 用法1 之前需要加上 ab c 10 n 100 ab c 10 n 100 c10表示併發使用者數為10 可以理解為開啟了10個工作執行緒或程序 n100表示請求總數為100 2 用法2加上user agent 從日誌上面可以看到user agent變成了wuhan agent 125 非正常...