Apache Bench——ab 性能測試工具

一、相關(guān)概念
與壓力測試有關(guān)的概念:

  1. 吞吐率(Requests per second)

概念:服務(wù)器并發(fā)處理能力的量化描述,單位是 reqs/s,指的是某個并發(fā)用戶數(shù)下單位時間內(nèi)處理的請求數(shù)。某個并發(fā)用戶數(shù)下單位時間內(nèi)能處理的最大請求數(shù),稱之為最大吞吐率。
計算公式:總請求數(shù) / 處理完成這些請求數(shù)所花費的時間,即
每秒請求數(shù) = 完成請求數(shù) / 測試時間。

  1. 并發(fā)連接數(shù)(并發(fā)連接數(shù))

概念:某個時刻服務(wù)器所接受的請求數(shù)目,簡單的講,就是一個會話。

  1. 并發(fā)用戶數(shù)(并發(fā)用戶數(shù),并發(fā)級別)

概念:要注意區(qū)分這個概念和并發(fā)連接數(shù)之間的區(qū)別,一個用戶可能同時會產(chǎn)生多個會話,也即連接數(shù)。

  1. 用戶平均請求等待時間(每個請求的時間)

計算公式:處理完成所有請求數(shù)所花費的時間 /(總請求數(shù) / 并發(fā)用戶數(shù)),即
每個請求的時間 = 測試所花費的時間 /(完整請求 / 并發(fā)級別)。

  1. 服務(wù)器平均請求等待時間(每個請求的時間:跨所有并發(fā)請求)

計算公式:處理完成所有請求數(shù)所花費的時間 / 總請求數(shù),即所花費的時間 / testsComplete 請求。
可以看到,它是吞吐率的倒數(shù)。
同時,它也 = 用戶平均請求等待時間 / 并發(fā)用戶數(shù),即
每個請求的時間 / 并發(fā)級別。

二、什么是 Apache Bench

官網(wǎng)地址:ab - Apache HTTP server benchmarking tool

ab - Apache HTTP 服務(wù)器性能基準(zhǔn)工具。

AB 是 Apache 的超文本傳輸協(xié)議(HTTP)的性能測試工具。其設(shè)計意圖是描繪當(dāng)前所安裝的的 Apache 的執(zhí)行性能,主要是顯示你安裝的 Apache 的每秒可以處理多少個請求。

AB 是 Apache 自帶的壓力測試工具。ab 非常實用,它不僅可以對 Apache 服務(wù)器進行網(wǎng)站訪問壓力測試,也可以對或其它類型的服務(wù)器進行壓力測試。比如 nginx、tomcat、IIS 等。

ab 是一種用于測試 Apache 超文本傳輸協(xié)議(HTTP)服務(wù)器的工具。apache 自帶 ab 工具,可以測試
apache、IIs、tomcat、nginx 等服務(wù)器。但是 ab 沒有 Jmeter、Loadrunner 那樣有各種場景設(shè)計、各種圖形報告和監(jiān)控,只需一個命令即可,有輸出描述,可以簡單的進行一些壓力測試。

總的來說 ab 工具 ab 小巧簡單,上手學(xué)習(xí)較快,可以提供需要的基本性能指標(biāo),但是沒有圖形化結(jié)果,不能監(jiān)控。因此 ab 工具可以用作臨時緊急任務(wù)和簡單測試。
同類型的壓力測試工具還有:webbench、siege、http_load 等

三、使用

查看 Apache 版本

Mac 系統(tǒng)下自帶 Apache,可以使用 apachectl -v 命令查看 Apache 版本:

$ apachectl -v
Server version: Apache/2.4.34 (Unix)
Server built:   Aug 17 2018 18:35:43

查看 ab 版本

$ ab -V   # 注意到,這里是大寫的V
This is ApacheBench, Version 2.3 <$Revision: 1826891 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

查看當(dāng)前系統(tǒng)的默認(rèn)文件打開數(shù):

ulimit -a
-t: cpu time (seconds)              unlimited
-f: file size (blocks)              unlimited
-d: data seg size (kbytes)          unlimited
-s: stack size (kbytes)             8192
-c: core file size (blocks)         0
-v: address space (kbytes)          unlimited
-l: locked-in-memory size (kbytes)  unlimited
-u: processes                       1418
-n: file descriptors                4864

設(shè)置打開文件數(shù)限制為 2048:

ulimit -n 2048

測試命令

命令行參數(shù) 說明
-n 請求次數(shù)
-c 并發(fā)數(shù)
-r 當(dāng)接收到錯誤時,不要退出套接字(socket)

錯誤問題:apr_socket_connect(): Operation already in progress (37)

這一個問題解決就是

ulimit -u 5000(16GB內(nèi)存)
ulimit -u 2030(8G內(nèi)存)

錯誤問題: apr_socket_recv: Connection reset by peer (54)

這個報錯一般是由于使用的 MacOSX 默認(rèn)自帶的 ab 限制了并發(fā)數(shù)導(dǎo)致的。
解決辦法:下載最新的 apache 并重新編譯,備份原來的 ab 并將新編譯的 ab 替換到原來的路徑

錯誤問題: apr_socket_recv: Connection Time out(60)&&socket: Too many open files (24)

這個的話就先更改最大文件限制

ulimit -n (查看是多少)
ulimit -n number(填數(shù)字設(shè)置最大值)

ab 壓測試時再添加上-s (你的需要的數(shù)字ms) 即可以解決timeout的問題

ab -s 1000 -r -k -n 10000 -c 500 -p Desktop/postab.txt -T 'application/json' "url"

以上內(nèi)容大部分轉(zhuǎn)自http://www.lxweimin.com/p/14ed545ccf56,因為大同小異所以筆者沒有自己寫.錯誤問題可以看看,然后分享一個重裝ab的連接http://www.lxweimin.com/p/2fe5b906feb1

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。

推薦閱讀更多精彩內(nèi)容

  • 一、相關(guān)概念 與壓力測試有關(guān)的概念: 1. 吞吐率(Requests per second) 概念:服務(wù)器并發(fā)處理...
    獨木舟的木閱讀 2,327評論 0 1
  • 網(wǎng)站性能壓力測試是服務(wù)器網(wǎng)站性能調(diào)優(yōu)過程中必不可缺少的一環(huán)。只有讓服務(wù)器處在高壓情況下,才能真正體現(xiàn)出軟件、硬件等...
    mode1943閱讀 1,544評論 1 2
  • 網(wǎng)站性能壓力測試是服務(wù)器網(wǎng)站性能調(diào)優(yōu)過程中必不可缺少的一環(huán)。只有讓服務(wù)器處在高壓情況下,才能真正體現(xiàn)出軟件、硬件等...
    fingerQin閱讀 4,001評論 0 0
  • 1、關(guān)于壓力測試 壓力測試是一種基本的質(zhì)量保證行為,它是每個重要軟件測試工作的一部分。壓力測試的基本思路很簡單:...
    遠(yuǎn)航天下閱讀 7,042評論 0 2
  • 在學(xué)習(xí)ab工具之前,我們需了解幾個關(guān)于壓力測試的概念 吞吐率(Requests per second)概念:服務(wù)器...
    ozil_oo閱讀 544評論 0 0