每天掌握一個Linux命令 - ab(Apache Benchmark)

Linux 命令工具 ab 使用指南

一、工具概述

ab(Apache Benchmark) 是 Apache 官方提供的開源壓力測試工具,用于衡量 Web 服務器的性能。它通過模擬多并發請求,測試服務器在高負載下的響應速度、吞吐量和穩定性,常用于評估網站或 API 的性能表現。

核心特點

  • 輕量級:無需復雜安裝,適合快速測試。
  • 高可配置性:支持自定義并發數、請求次數、請求頭、超時時間等參數。
  • 結果清晰:輸出包含請求總數、失敗率、吞吐量、平均響應時間等關鍵指標。

二、安裝方式

1. Debian/Ubuntu 系統

sudo apt update
sudo apt install apache2-utils  # ab 包含在該軟件包中

2. CentOS/RHEL 系統

sudo yum install httpd-tools

3. 源碼編譯安裝(適用于其他 Linux 系統)

# 下載 Apache 源碼包
wget https://downloads.apache.org/apr/apr-1.7.0.tar.gz
wget https://downloads.apache.org/apr/apr-util-1.6.1.tar.gz
wget https://downloads.apache.org/httpd/httpd-2.4.57.tar.gz# 編譯安裝 APR 和 APR-Util
tar -zxvf apr-1.7.0.tar.gz
cd apr-1.7.0
./configure
make && sudo make installcd ..
tar -zxvf apr-util-1.6.1.tar.gz
cd apr-util-1.6.1
./configure --with-apr=/usr/local/apr
make && sudo make install# 編譯安裝 httpd(含 ab 工具)
cd ..
tar -zxvf httpd-2.4.57.tar.gz
cd httpd-2.4.57
./configure --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util
make && sudo make install
# ab 工具路徑:/usr/local/apache2/bin/ab

三、核心功能

功能分類說明
并發測試模擬多用戶同時訪問,測試服務器對并發連接的處理能力。
吞吐量統計計算服務器每秒處理的請求數(Requests per second)。
響應時間分析統計請求的平均響應時間、最大/最小響應時間及時間分布(如 50%/95% 耗時)。
自定義請求支持設置請求方法(GET/POST)、請求頭、請求體、URL 參數等。
長連接測試支持保持 HTTP 連接(-k 參數),測試持久連接性能。

四、基礎用法

基本語法

ab [選項] [目標 URL]

常用選項說明

選項描述
-n總請求次數(必填)。
-c并發用戶數(必填)。
-t測試持續時間(秒),與 -n 二選一。
-k啟用 HTTP 長連接(keep-alive)。
-H添加請求頭,格式:-H "Header: Value"(可多次使用)。
-p指定 POST 請求的參數文件(文件內容為參數,如 key=value)。
-T設置 POST 請求的 Content-Type,如 -T "application/x-www-form-urlencoded"
-v輸出詳細信息,數值越大越詳細(如 -v 4)。

示例:GET 請求基礎測試

# 測試百度首頁,100 個請求,5 個并發
ab -n 100 -c 5 http://www.baidu.com/

輸出結果解讀

Concurrency Level:      5        # 并發數
Time taken for tests:   0.323秒   # 總耗時
Complete requests:      100      # 完成請求數
Failed requests:        0        # 失敗請求數(非 2xx/3xx 狀態碼)
Total transferred:      138700 bytes # 傳輸總數據量
HTML transferred:       131610 bytes # HTML 內容大小
Requests per second:    309.60 [#/sec] (mean) # 吞吐量(QPS)
Time per request:       16.150 [ms] (mean)   # 平均每個請求的耗時(所有并發)
Time per request:       3.230 [ms] (mean, across all concurrent requests) # 單個并發的平均耗時
Transfer rate:          417.57 [Kbytes/sec] received # 數據傳輸速率

五、進階操作

1. POST 請求測試

# 通過 -p 指定參數文件(post_data.txt 內容:username=test&password=123)
ab -n 50 -c 10 -p post_data.txt -T "application/x-www-form-urlencoded" http://api.example.com/login

2. 自定義請求頭

# 添加自定義認證頭和 Content-Type
ab -n 100 -c 20 -H "Authorization: Bearer your_token" -H "Content-Type: application/json" http://api.example.com/data

3. 長連接測試(-k)

ab -n 500 -c 50 -k http://example.com/static-files

4. 限制測試時間(-t)

# 持續測試 30 秒,自動計算請求次數
ab -c 100 -t 30 http://video.example.com/stream

5. 輸出詳細調試信息(-v)

ab -v 4 -n 10 -c 2 http://localhost:8080/api # 顯示請求頭、響應狀態碼等細節

六、實戰案例

案例:測試 Nginx 靜態文件服務器性能

場景:模擬 200 個并發用戶,持續請求 60 秒,測試 /images 目錄下的圖片文件。

ab -c 200 -t 60 -k http://nginx-server/images/

預期目標

  • 吞吐量(QPS)穩定在 5000+
  • 平均響應時間 < 50ms
  • 失敗請求數為 0

優化方向

  • 若 QPS 不足,可調整 Nginx 的 worker_connections 或開啟緩存(proxy_cache)。
  • 若響應時間過高,檢查磁盤 I/O 或網絡帶寬瓶頸。

七、注意事項

1. 服務器安全

  • 避免對生產環境直接進行壓測,建議先在預發布環境測試。
  • 控制并發數和請求頻率,防止壓測導致服務崩潰(可逐步增加 -c 參數)。

2. 測試局限性

  • ab 是單進程工具,無法完全模擬真實用戶行為(如瀏覽器渲染、JS 執行)。
  • 高并發下可能受限于客戶端機器性能(如 CPU/網絡帶寬),需確保客戶端資源充足。

3. 參數調優

  • 若出現 connect() failed 錯誤,可能是客戶端端口耗盡,可臨時調整系統參數:
    sudo sysctl -w net.ipv4.ip_local_port_range="1024 65535"
    
  • 對于 HTTPS 測試,需使用 -S(SSL 證書)和 -P(客戶端證書)參數,或改用其他工具(如 wrk)。

4. 結果解讀

  • 關注 失敗請求數(非 2xx/3xx 狀態碼)和 異常耗時分布(如 95% 耗時突然升高)。
  • 多次測試取平均值,避免單次結果受臨時因素干擾。

通過以上指南,可快速掌握 ab 的核心用法,結合實際場景進行性能測試和優化。對于更復雜的負載場景,可考慮使用 wrkJMeter 等專業工具補充測試。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/81595.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/81595.shtml
英文地址,請注明出處:http://en.pswp.cn/web/81595.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

AI的“空間盲癥“

<------最重要的是訂閱“魯班模錘”------> 當我們看到一張照片時&#xff0c;大腦會自動分析其中的空間關系——哪個物體在前&#xff0c;哪個在后&#xff0c;左邊是什么&#xff0c;右邊是什么。但對于當今最先進的AI系統來說&#xff0c;這種看似簡單的空間理解卻是…

數據擬合實驗

實驗類型&#xff1a;●驗證性實驗 ○綜合性實驗 ○設計性實驗 實驗目的: 進一步熟練掌握最小二乘多項式擬合算法&#xff0c;提高編程能力和解決擬合問題的實踐技能。 實驗內容&#xff1a; 1 對下列數據&#xff0c;求解最小二乘拋物線f(x)Ax2BxC x -3 -1 1 3 y 15 5 …

系統思考:心智模式與業務創新

在最近的項目交付討論中&#xff0c;我頻繁聽到一個詞&#xff1a;“缺合適的人”。這讓我陷入了深思&#xff1a;我們是否還在傳統的生產力概念&#xff1f;納瓦爾提出的三種杠桿&#xff1a;勞動力、資本、零邊際成本產品。在當今這個信息化、全球化的商業世界中&#xff0c;…

python分步合并處理excel數據

文章目錄 概要整體架構流程技術名詞解釋技術細節小結概要 客戶需求 1. 背景與目標 用戶需要將三個包含農業實驗數據的Excel表格(AK、AN、AP)合并為一個結構化數據集,用于后續分析。每個表格包含相同類型的字段(如對照組與PSB處理組的樣本數、均值、標準差),但需通過字…

Python爬蟲實戰:研究PyQuery庫相關技術

1. 引言 1.1 研究背景與意義 隨著互聯網的快速發展,網絡上的數據量呈爆炸式增長。如何高效地從海量的網頁數據中提取有價值的信息,成為當前信息技術領域的一個重要研究方向。網絡爬蟲作為一種自動獲取網頁內容的程序,能夠按照一定的規則,自動地抓取萬維網信息,在搜索引擎…

深度學習---注意力機制(Attention Mechanism)

一、核心概念與發展背景 注意力機制是深度學習中模擬人類注意力選擇能力的關鍵技術&#xff0c;旨在從海量信息中篩選關鍵特征&#xff0c;解決長序列信息處理中的瓶頸問題&#xff08;如RNN的梯度消失&#xff09;。其核心思想是&#xff1a;對輸入序列的不同部分分配不同權重…

Jenkins分配對應項目權限與用戶管理

在日常開發過程中經常會出現用戶和權限管理問題&#xff0c;沒有配置trigger時&#xff0c;通常需要我們手動構建&#xff0c;但此時前端和后端的朋友沒有build權限&#xff0c;導致每次dev環境測試都需要麻煩我們手動去構建&#xff0c;消息傳達不及時則會降低開發效率。 現有…

XCTF-web-file_include

解析 <?php highlight_file(__FILE__); // 高亮顯示當前PHP文件源代碼 include("./check.php"); // 包含檢查文件&#xff08;可能包含安全過濾邏輯&#xff09;if(isset($_GET[filename])) { // 檢查是否傳入filename參數$filename $_GET[f…

matlab全息技術中的菲涅爾仿真成像

matlab全息技術中的菲涅爾仿真成像程序。 傅里葉法&#xff08;重建距離得大&#xff09;/Fresnel.m , 545 傅里葉法&#xff08;重建距離得大&#xff09;/FresnelB.m , 548 傅里葉法&#xff08;重建距離得大&#xff09;/Fresnel_solution.m , 1643 傅里葉法&#xff08;重…

CS144 - LAB0

CS144 - Lab 0 telnet 發送請求 如圖&#xff0c;很簡單&#xff0c;但是注意輸入時間太久會超時 發郵箱 首先我們需要用命令行去發郵箱&#xff0c;這里我用企業微信郵箱給自己的 qq 郵箱發送~ 整個命令如下&#xff01; 對于其中的參數&#xff0c;其實從英文就可以看出來…

kafka SASL/PLAIN 認證及 ACL 權限控制

一、Zookeeper 配置 SASL/PLAIN 認證&#xff08;每個zookeeper節點都要做&#xff09; 1.1 在 zookeeper 的 conf 目錄下&#xff0c;創建 zk_server_jaas.conf 文件&#xff0c;內容如下 Server {org.apache.kafka.common.security.plain.PlainLoginModule requiredusernam…

20250528-C#知識:函數簡介及函數重載

C#知識&#xff1a;函數簡介及函數重載 本文主要介紹函數參數和函數重載相關的知識點 1、函數 函數一般寫在類中 一般函數調用 static int Add(int num, int value){num value;return num;}//一般函數調用&#xff0c;發生值類型參數的復制int num 1;Add(num, 1); //調用…

Vue內置指令與自定義指令

一、前言 在 Vue 開發中&#xff0c;指令&#xff08;Directives&#xff09; 是一種非常強大的特性&#xff0c;它允許我們以聲明式的方式操作 DOM。Vue 提供了一些常用的內置指令&#xff0c;如 v-if、v-show、v-bind、v-on 等&#xff0c;同時也支持開發者根據需求創建自己…

華為AP6050DN無線接入點瘦模式轉胖模式

引言 華為AP6050DN是一款企業級商用的無線接入點。由于產品定位原因,其默認工作在瘦模式下,即須經AC統一控制和管理,是不能直接充當普通的無線路由器來使用的。 而本文的目的,就是讓其能脫離AC的統一控制和管理,當作普通無線路由器來使用。 硬件準備 華為AP6050DN無線接…

程序員出海之英語-使用手冊

為什么現在實時翻譯工具這么牛逼了&#xff0c;AI轉譯這么準確了&#xff0c;我還在這里跟老古董一樣吭哧吭哧學英語呢&#xff1f; 這是因為我們始終是和人打交道&#xff0c;不僅僅是為了考試&#xff0c;看懂官方文章&#xff0c;聽懂官方視頻。這里為什么說官方&#xff0c…

Java 事務管理:在分布式系統中實現可靠的數據一致性

Java 事務管理&#xff1a;在分布式系統中實現可靠的數據一致性 在當今的軟件開發領域&#xff0c;分布式系統逐漸成為主流架構。然而&#xff0c;這也給事務管理帶來了巨大的挑戰。本文將深入探討 Java 事務管理在分布式系統中的關鍵要點&#xff0c;并通過詳細代碼實例展示如…

微信小程序關于截圖、錄屏攔截

1.安卓 安卓&#xff1a; 在需要禁止的頁面添加 onShow() {if (wx.setVisualEffectOnCapture) {wx.setVisualEffectOnCapture({visualEffect: hidden,complete: function(res) {}})}},// 頁面隱藏和銷毀時需要釋放防截屏錄屏設置onHide() {if (wx.setVisualEffectOnCapture) {w…

使用 PySpark 從 Kafka 讀取數據流并處理為表

使用 PySpark 從 Kafka 讀取數據流并處理為表 下面是一個完整的指南&#xff0c;展示如何通過 PySpark 從 Kafka 消費數據流&#xff0c;并將其處理為可以執行 SQL 查詢的表。 1. 環境準備 確保已安裝: Apache Spark (包含Spark SQL和Spark Streaming)KafkaPySpark對應的Ka…

第十天的嘗試

目錄 一、每日一言 二、練習題 三、效果展示 四、下次題目 五、總結 一、每日一言 哈哈&#xff0c;十天缺了兩天&#xff0c;我寫的文章現在質量不高&#xff0c;所以我可能考慮&#xff0c;應該一星期或者三四天出點高質量的文章&#xff0c;同時很開心大家能夠學到知識&a…

mediapipe標注視頻姿態關鍵點(基礎版加進階版)

前言 手語視頻流的識別有兩種大的分類&#xff0c;一種是直接將視頻輸入進網絡&#xff0c;一種是識別了關鍵點之后再進入網絡。所以這篇文章我就要來講講如何用mediapipe對手語視頻進行關鍵點標注。 代碼 需要直接使用代碼的&#xff0c;我就放這里了。環境自己配置一下吧&…