手机看片精品高清国产日韩,色先锋资源综合网,国产哺乳奶水91在线播放,乱伦小说亚洲色图欧洲电影

幫助中心 >  行業資訊 >  云計算 >  Linux小技巧-使用ab命令做性能壓測

Linux小技巧-使用ab命令做性能壓測

2025-01-20 10:58:16 2063

在進行服務器性能優化或排查問題時,壓力測試是不可或缺的工具之一。Apache Bench(簡稱ab)作為一款輕量級的壓測工具,不僅可以幫助開發者和運維人員快速了解服務器在高并發情況下的表現,還能夠揭示可能存在的網絡瓶頸。本篇文章將介紹ab命令的基本功能和使用方法,幫助大家在日常的工作中有效應用該工具進行簡單的壓測。

1 背景

有時需要在集群內簡單地發起壓測,以排除網絡問題,這時可以使用 ab 命令。

ab 命令全稱為 Apache bench 是Apache自帶的壓力測試工具。ab 命令非常實用,它不僅可以對 Apache 服務器進行網站訪問壓力測試,也可以對或其它類型的服務器進行壓力測試,ab 命令會創建多個并發線程,模擬多個訪問者同時對某一個url地址進行訪問,實現壓力測試。

ab 命令對發出負載的計算機要求很低,它既不會占用很高 CPU,也不會占用很多內存。但卻會給目標服務器造成巨大的負載,其原理類似CC攻擊,可能會造成目標服務器資源耗盡,嚴重時可能會導致死機,而且它沒有圖形化結果不能監控,所以只能用作臨時緊急任務和簡單的測試。

2 ab 安裝

yum install -y httpd-tools


命令執行完成后,就可以直接運行ab。


3 ab 使用方法

常用使用方法:

ab -t 120 -n 1000 -c 20 -i
#-t:測試所進行的最大秒數。其內部隱含值是-n 50000,它可以使對服務器的測試限制在一個固定的總時間以內。默認時,沒有時間限制。
#-n:在測試會話中所執行的請求個數。默認時,僅執行一個請求。
#-c:并發量,一次產生的請求個數。默認是一次一個。
#-i:執行HEAD請求,而不是GET。


完整參數說明:

-n:在測試會話中所執行的請求個數。默認時,僅執行一個請求。

-c:一次產生的請求個數。默認是一次一個。

-t:測試所進行的最大秒數。其內部隱含值是-n 50000,它可以使對服務器的測試限制在一個固定的總時間以內。默認時,沒有時間限制。 

-p:包含了需要POST的數據的文件。

-P:對一個中轉代理提供BASIC認證信任。用戶名和密碼由一個:隔開,并以base64編碼形式發送。無論服務器是否需要(即是否發送了401認證需求代碼),此字符串都會被發送。

-T:POST數據所使用的Content-type頭信息。

-v:設置顯示信息的詳細程度-4或更大值會顯示頭信息,3或更大值可以顯示響應代碼(404,200等),2或更大值可以顯示警告和其他信息。

-V:顯示版本號并退出。

-w:以HTML表的格式輸出結果。默認時,它是白色背景的兩列寬度的一張表。

-i:執行HEAD請求,而不是GET。

-x:設置屬性的字符串(<table>)。

-X:對請求使用代理服務器。

-y:設置屬性的字符串(<tr>)。

-z:設置屬性的字符串(<td>)。

-C:對請求附加一個Cookie:行。其典型形式是name=value的一個參數對,此參數可以重復。

-H:對請求附加額外的頭信息。此參數的典型形式是一個有效的頭信息行,其中包含了以冒號分隔的字段和值的對(如,”Accept-Encoding:zip/zop;8bit”)。

-A:對服務器提供BASIC認證信任。用戶名和密碼由一個:隔開,并以base64編碼形式發送。無論服務器是否需要(即,是否發送了401認證需求代碼),此字符串都會被發送。

-h:顯示使用方法。

-d:不顯示”percentage served within XX [ms] table”的消息(為以前的版本提供支持)。

-e:產生一個以逗號分隔的(CSV)文件,其中包含了處理每個相應百分比的請求所需要(從1%到100%)的相應百分比的(以微妙為單位)時間。由于這種格式已經“二進制化”,所以比’gnuplot’格式更有用。

-g:把所有測試結果寫入一個’gnuplot’或者TSV(以Tab分隔的)文件。此文件可以方便地導入到Gnuplot,IDL,Mathematica,Igor甚至Excel中。其中的第一行為標題。

-i:執行HEAD請求,而不是GET。

-k:啟用HTTP KeepAlive功能,即在一個HTTP會話中執行多個請求。默認時,不啟用KeepAlive功能。

-q:如果處理的請求數大于150,ab每處理大約10%或者100個請求時,會在stderr輸出一個進度計數。此-q標記可以抑制這些信息。

4 ab 結果說明

4.1 壓測指標

在進行性能測試過程中有幾個指標比較重要:

吞吐率(Requests per second) 概念:服務器并發處理能力的量化描述,單位是reqs/s,指的是某個并發用戶數下單位時間內處理的請求數。某個并發用戶數下單位時間內能處理的最大請求數,稱之為最大吞吐率。計算公式:總請求數 / 處理完成這些請求數所花費的時間,即 Request per second = Complete requests / Time taken for tests

并發連接數(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。


4.2 網絡性能指標

image.png


由以下時間點來算出時間指標:

t1: Start of connection
這是連接開始的時間點,標志著嘗試建立連接的過程的開始。

t2: Connected, start writing
這個時間點標志著連接已經建立,并且開始發送(寫入)請求數據。

t3: Request written
這個時間點指的是請求數據已經完全寫入(發送完畢)的時間。

t4: First byte of input
這個時間點是接收到輸入的第一個字節的時間,即開始接收響應數據的時間。

t5: Connection closed
這個時間點是連接關閉的時間,標志著整個請求-響應過程的結束。


時間指標定義:

Connect:
定義為從開始連接(t1)到連接成功并開始寫入請求(t2)的時間差。這通常代表了網絡延遲。

Processing:
定義為從連接成功并開始寫入請求(t2)到連接關閉(t5)的時間差。這是接收完整響應所需的時間,即從連接打開后開始計算直到連接關閉。

Waiting:
定義為從請求寫入完成(t3)到接收輸入的第一個字節(t4)的時間差。這代表了發送請求后等待第一個字節的時間(Waiting <= Processing)。

Total:
定義為從開始連接(t1)到連接關閉(t5)的總時間。這是整個請求處理過程的總耗時(Connect + Processing)。



5 返回結果說明

image.png

 
 7.Benchmarking 192.168.176.30 (be patient) #完成的進度
 8.Completed 100 requests
 9.Completed 200 requests
 10.Completed 300 requests
 11.Completed 400 requests
 12.Completed 500 requests
 13.Completed 600 requests
 14.Completed 700 requests
 15.Completed 800 requests
 16.Completed 900 requests
 17.Completed 1000 requests
 18.Finished 1000 requests 
 19.
 20.Server Software:        Apache/2.4.6 #服務器軟件版本
 21.Server Hostname:        192.168.176.30 #服務器主機名
 22.Server Port:            80 #服務器端口
 23.
 24.Document Path:          /index.html #測試的頁面
 25.Document Length:        9 bytes #頁面的字節數 
 26.Concurrency Level:      900 #請求的并發數,代表著訪問的客戶端數量
 27.Time taken for tests:   0.489 seconds #整個測試花費的時間
 28.Complete requests:      1000 #成功的請求數量
 29.Failed requests:        0 #失敗的請求數量
 30.Write errors:           0
 31.Total transferred:      267000 bytes #整個測試過程的總數據大小(包括header頭信息等)
 32.HTML transferred:       9000 bytes #整個測試過程HTML頁面實際的字節數
 33.Requests per second:    2045.81 [#/sec] (mean) #每秒處理的請求數,這是非常重要的參數,體現了服務器的吞吐量                                               
 34.
 35.            #后面括號中的 mean 表示這是一個平均值
 36.Time per request:       439.923 [ms] (mean) #平均請求響應時間,括號中的 mean 表示這是一個平均值
 37.#每個請求的時間 0.489[毫秒],意思為在所有的并發請求每個請求實際運行時間的平均值
 38.#由于對于并發請求 cpu 實際上并不是同時處理的,而是按照每個請求獲得的時間片逐個輪轉處理的
 39.#所以基本上第一個 Time per request 時間約等于第二個 Time per request 時間乘以并發請求數
 40.Time per request:       0.489 [ms] (mean, across all concurrent requests) 
 41. 
 42.Transfer rate:          533.43 [Kbytes/sec] received #傳輸速率,平均每秒的流量
 43.                                                      #可以幫助排除是否存在網絡流量過大導致響應時間延長的問題
 44. Connection Times (ms) #連接時間              
 45. 
 46.           min  mean[+/-sd]#平均時間和標準差 median#中位數   max
 47. Connect:        0   17  11.8                    21           34
 48.  Processing:     1  145 153.9                    35           446
 49.  Waiting:        1  145 153.9                    35           446
 50.  Total:         16  163 161.2                    63           474 
 51.  
 52.  Percentage of the requests served within a certain time (ms) #在一定的時間內提供服務的請求的百分比
 53.    50%    63  
 54.    66%    244  
 55.    75%    255  
 56.   80%    260  
 57.    90%    468  
 58.    95%    471  
 59.    98%    474  
 60.    99%    474 
 61.    100%    474 (longest request)


Apache Bench作為一款高效、輕量的壓力測試工具,雖然在圖形化界面和實時監控上有所欠缺,但它憑借簡單易用的特性,仍然是日常工作中快速檢測服務器性能的首選工具之一。通過合理配置參數并分析測試結果,用戶能夠對服務器性能有更深入的了解,從而為進一步的優化和改進提供有力依據。

想了解更多Linux相關的分享歡迎上藍隊云官網查詢,更多免費技術學習文檔,藍隊云期待與您一起探索。


提交成功!非常感謝您的反饋,我們會繼續努力做到更好!

這條文檔是否有幫助解決問題?

非常抱歉未能幫助到您。為了給您提供更好的服務,我們很需要您進一步的反饋信息:

在文檔使用中是否遇到以下問題: