ab壓力測試工具

来源:https://www.cnblogs.com/zhang-ding-1314/archive/2018/08/31/9564300.html
-Advertisement-
Play Games

安裝ab測試工具 ab工具幫助 ab是Apache超文本傳輸協議(HTTP)的性能測試工具。其設計意圖是描繪當前所安裝的Apache的執行性能,主要是顯示你安裝的Apache每秒可以處理多少個請求。 使用舉例: ...


吞吐率(Requests per second)
  概念:伺服器併發處理能力的量化描述,單位是reqs/s,指的是某個併發用戶數下單位時間內處理的請求數。某個併發用戶數下單位時間內能處理的最大請求數,稱之為最大吞吐率。
  計算公式:總請求數 / 處理完成這些請求數所花費的時間,即
  Request per second = Complete requests / Time taken for tests
  QPS(每秒查詢數)、TPS(每秒事務數)是吞吐量的常用量化指標,另外還有HPS(每秒HTTP請求數)。
  跟吞吐量有關的幾個重要是:併發數、響應時間。
  QPS(TPS),併發數、響應時間它們三者之間的關係是:
  QPS(TPS)= 併發數/平均響應時間
  對於無併發的應用系統而言,吞吐量與響應時間成嚴格的反比關係,實際上此時吞吐量就是響應時間的倒數。前面已經說過,對於單用戶的系統,響應時間(或者系統響應時間和應用延遲時間)可以很好地度量系統的性能,但對於併發系統,通常需要用吞吐量作為性能指標。 
 對於一個多用戶的系統,如果只有一個用戶使用時系統的平均響應時間是t,當有你n個用戶使用時,每個用戶看到的響應時間通常並不是n×t,而往往比n×t小很多(當然,在某些特殊情況下也可能比n×t大,甚至大很多)。
這是因為處理每個請求需要用到很多資源,由於每個請求的處理過程中有許多不走難以併發執行,這導致在具體的一個時間點,所占資源往往並不多。也就是說在處理單個請求時,在每個時間點都可能有許多資源被閑置,當處理多個請求時,
如果資源配置合理,每個用戶看到的平均響應時間並不隨用戶數的增加而線性增加。實際上,不同系統的平均響應時間隨用戶數增加而增長的速度也不大相同,這也是採用吞吐量來度量併發系統的性能的主要原因。一般而言,吞吐量是一個比較通用的指標,兩個具有不同用戶數和用戶使用模式的系統,
如果其最大吞吐量基本一致,則可以判斷兩個系統的處理能力基本一致。

併發連接數(The number of concurrent connections) 概念:某個時刻伺服器所接受的請求數目,簡單的講,就是一個會話。
  併發用戶數(The number of concurrent users,Concurrency Level)
  概念:要註意區分這個概念和併發連接數之間的區別,一個用戶可能同時會產生多個會話,也即連接數。
  併發用戶數是指系統可以同時承載的正常使用系統功能的用戶的數量。與吞吐量相比,併發用戶數是一個更直觀但也更籠統的性能指標。實際上,併發用戶數是一個非常不准確的指標,因為用戶不同的使用模式會導致不同用戶在單位時間發出不同數量的請求。
一網站系統為例,假設用戶只有註冊後才能使用,但註冊用戶並不是每時每刻都在使用該網站,因此具體一個時刻只有部分註冊用戶同時線上,線上用戶就在瀏覽網站時會花很多時間閱讀網站上的信息,因而具體一個時刻只有部分線上用戶同時向系統發出請求。
這樣,對於網站系統我們會有三個關於用戶數的統計數字:註冊用戶數、線上用戶數和同時發請求用戶數。由於註冊用戶可能長時間不登陸網站,使用註冊用戶數作為性能指標會造成很大的誤差。而線上用戶數和同事發請求用戶數都可以作為性能指標。
相比而言,以線上用戶作為性能指標更直觀些,而以同時發請求用戶數作為性能指標更準確些。

用戶平均請求等待時間(Time per request) 計算公式:處理完成所有請求數所花費的時間/ (總請求數 / 併發用戶數),即 Time per request = Time taken for tests /( Complete requests / Concurrency Level)
伺服器平均請求等待時間(Time per request: across all concurrent requests)
  計算公式:處理完成所有請求數所花費的時間 / 總請求數,即
  Time taken for / testsComplete requests
  可以看到,它是吞吐率的倒數。
  同時,它也=用戶平均請求等待時間/併發用戶數,即Time per request / Concurrency Level
QPS每秒查詢率(Query Per Second) 
  每秒查詢率QPS是對一個特定的查詢伺服器在規定時間內所處理流量多少的衡量標準,在網際網路上,作為功能變數名稱系統伺服器的機器的性能經常用每秒查詢率來衡量。對應fetches/sec,即每秒的響應請求數,也即是最大吞吐能力。 (看來是類似於TPS,只是應用於特定場景的吞吐量)
 響應時間(RT) 
  響應時間是指系統對請求作出響應的時間。直觀上看,這個指標與人對軟體性能的主觀感受是非常一致的,因為它完整地記錄了整個電腦系統處理請求的時間。由於一個系統通常會提供許多功能,而不同功能的處理邏輯也千差萬別,因而不同功能的響應時間也不盡相同,
甚至同一功能在不同輸入數據的情況下響應時間也不相同。所以,在討論一個系統的響應時間時,人們通常是指該系統所有功能的平均時間或者所有功能的最大響應時間。當然,往往也需要對每個或每組功能討論其平均響應時間和最大響應時間。   對於單機的沒有併發操作的應用系統而言,人們普遍認為響應時間是一個合理且準確的性能指標。需要指出的是,響應時間的絕對值並不能直接反映軟體的性能的高低,軟體性能的高低實際上取決於用戶對該響應時間的接受程度。對於一個游戲軟體來說,響應時間小於100毫秒應該是不錯的,
響應時間在1秒左右可能屬於勉強可以接受,如果響應時間達到3秒就完全難以接受了。而對於編譯系統來說,完整編譯一個較大規模軟體的源代碼可能需要幾十分鐘甚至更長時間,但這些響應時間對於用戶來說都是可以接受的。

安裝ab測試工具

yum install httpd-tools -y

ab工具幫助
  ab是Apache超文本傳輸協議(HTTP)的性能測試工具。其設計意圖是描繪當前所安裝的Apache的執行性能,主要是顯示你安裝的Apache每秒可以處理多少個請求。

命令格式: ./ab [options] [http://]hostname[:port]/path
命令參數:
-A:指定連接伺服器的基本的認證憑據;
-c:指定一次向伺服器發出請求數;
-C:添加cookie;
-g:將測試結果輸出為“gnuolot”文件;
-h:顯示幫助信息;
-H:為請求追加一個額外的頭;
-i:使用“head”請求方式;
-k:激活HTTP中的“keepAlive”特性;
-n:指定測試會話使用的請求數;
-p:指定包含數據的文件;
-q:不顯示進度百分比;
-T:使用POST數據時,設置內容類型頭;
-v:設置詳細模式等級;
-w:以HTML表格方式列印結果;
-x:以表格方式輸出時,設置表格的屬性;
-X:使用指定的代理伺服器發送請求;
-y:以表格方式輸出時,設置表格屬性。

參數很多,一般我們用 -c表示併發數  -n 表示請求數即可
如果只用到一個Cookie,那麼只需鍵入命令:
ab -n 100 -C key=value http://test.com/
如果需要多個Cookie,就直接設Header:
ab -n 100 -H “Cookie: Key1=Value1; Key2=Value2” http://test.com/

使用舉例:

[root@c75 ~]# ab -n 1000 -c 1000 http://192.168.255.209/monitor
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 192.168.255.209 (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests


Server Software:        nginx/1.14.0
Server Hostname:        192.168.255.209
Server Port:            80

Document Path:          /monitor
Document Length:        185 bytes

Concurrency Level:      1000              //併發請求數
Time taken for tests:   2.252 seconds     //整個測試持續的時間
Complete requests:      1000              //完成的請求數
Failed requests:        0                 //失敗的請求數
Write errors:           0                 //寫入失敗數
Non-2xx responses:      1000              //非2xx狀態請求數
Total transferred:      386000 bytes      //傳輸的總位元組數大小
HTML transferred:       185000 bytes      //傳輸的總文檔位元組數大小
Requests per second:    444.05 [#/sec] (mean)   //每秒處理的請求數
Time per request:       2252.008 [ms] (mean)    //每個請求花費的平均時間
Time per request:       2.252 [ms] (mean, across all concurrent requests)
Transfer rate:          167.39 [Kbytes/sec] received  //轉移率

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        6   40  14.2     36      69   //創建TCP連接到伺服器或者代理伺服器所花費的時間
Processing:    40  738 722.9    302    2138   //寫入緩衝區消耗+鏈路消耗+服務端消耗
Waiting:       11  546 595.8    293    1930   //寫入緩衝區消耗+鏈路消耗+服務端消耗+讀取數據消耗
Total:         45  778 733.0    344    2207   //總花費時間

Percentage of the requests served within a certain time (ms)
  50%    344
  66%    752
  75%   1668
  80%   1799
  90%   1957
  95%   2073
  98%   2161
  99%   2191
 100%   2207 (longest request)

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 常用工具及命令:pstree、ps、pidof、pgrep、top、htop、vmstat、glances、dstat、kill、bg、fg、nice、renice 一、 pstree - display a tree of processes 1 yum install psmisc //軟體包包 ...
  • 1、安裝gcc (編譯時需要) [root@localhost~]# yum -y install gcc gcc-c++ 2、安裝libevent ,FastDFS依賴libevent庫; [root@localhost~]# yum -y install libevent 3、安裝libfast ...
  • 學51單片機 或者arm時通常都會對看門狗進行處理,那麼看門狗到底是什麼東西呢,它是怎麼運行的呢? 看門狗晶元和51晶元的一個I/O引腳相連,每隔一段時間cpu都會通過一段程式給I/O引腳發送一個高電平,如果程式運行出問題了,那麼程式便不能夠給看門狗發送高電平了,那麼看門狗就會和複位引腳相連產生一個 ...
  • 1 安裝 sudo apt-get install samba 2 配置 打開Samba配置文件: sudo gedit /etc/samba/smb.conf 在其最後添加: [share] path = /home/用戶名/download valid users = share availab... ...
  • 使用的是MFRC522射頻模塊,把磁卡放入感應區後,可以執行三種操作: 本來想著回學校了能把洗浴卡的金額給改掉,實現帝皇般的尊貴洗浴享受(不花錢…) 結果今天 一學期一換,學校真是勤…估計扇區的密碼肯定不是初始密碼了。 難度並不大,上代碼先: 主函數↓ RC522驅動頭文件↓ ...
  • 看到Keil MDK又出新版咯,Keil MDK是基於Arm的微控制器最全面的軟體開發解決方案,包括創建,構建和調試嵌入式應用程式所需的所有組件。MDK v5.25通過其集成的功率測量功能引入了對ULINK plus的支持。 ...
  • 使用root用戶,visudo命令(實際是編輯/etc/sudoers文件),用法和vim一樣,末行模式:wq退出,如還有提示,使用大寫"Q"保存退出,小寫"e"繼續編輯,小寫"x"不保存退出。 預設5分鐘後剛纔輸入的sodo密碼過期,下次sudo需要重新輸入密碼,如果覺得在sudo的時候輸入密碼麻 ...
  • 1、打開用戶Vim配置文件:~/.vimrc vim ~/.vimrc 2、輸入以下配置: set tabstop=4 inoremap " ""<ESC>i inoremap ( ()<ESC>i inoremap { {<CR>}<ESC>O<TAB> 說明: 1)Vim的TAB預設是8個空格, ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...