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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...