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

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

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

2025-01-20 10:58:16 363

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

1 背景

有時需要在集群內(nèi)簡單地發(fā)起壓測,以排除網(wǎng)絡(luò)問題,這時可以使用 ab 命令。

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

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

2 ab 安裝

yum install -y httpd-tools


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


3 ab 使用方法

常用使用方法:

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


完整參數(shù)說明:

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

-c:一次產(chǎn)生的請求個數(shù)。默認是一次一個。

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

-p:包含了需要POST的數(shù)據(jù)的文件。

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

-T:POST數(shù)據(jù)所使用的Content-type頭信息。

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

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

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

-i:執(zhí)行HEAD請求,而不是GET。

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

-X:對請求使用代理服務(wù)器。

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

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

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

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

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

-h:顯示使用方法。

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

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

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

-i:執(zhí)行HEAD請求,而不是GET。

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

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

4 ab 結(jié)果說明

4.1 壓測指標

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

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

并發(fā)連接數(shù)(The number of concurrent connections) 概念:某個時刻服務(wù)器所接受的請求數(shù)目,簡單的講,就是一個會話。

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

用戶平均請求等待時間(Time per request) 計算公式:處理完成所有請求數(shù)所花費的時間/總請求數(shù),即 Time per request=Time taken for tests/(Complete requests/Concurrency Level)。

服務(wù)器平均請求等待時間(Time per request: across all concurrent requests) 計算公式:處理完成所有請求數(shù)所花費的時間 / 總請求數(shù),即 Time taken for / testsComplete requests 可以看到,它是吞吐率的倒數(shù)。同時,它也=用戶平均請求等待時間/并發(fā)用戶數(shù),即 Time per request / Concurrency Level。


4.2 網(wǎng)絡(luò)性能指標

image.png


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

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

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

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

t4: First byte of input
這個時間點是接收到輸入的第一個字節(jié)的時間,即開始接收響應(yīng)數(shù)據(jù)的時間。

t5: Connection closed
這個時間點是連接關(guān)閉的時間,標志著整個請求-響應(yīng)過程的結(jié)束。


時間指標定義:

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

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

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

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



5 返回結(jié)果說明

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 #服務(wù)器軟件版本
 21.Server Hostname:        192.168.176.30 #服務(wù)器主機名
 22.Server Port:            80 #服務(wù)器端口
 23.
 24.Document Path:          /index.html #測試的頁面
 25.Document Length:        9 bytes #頁面的字節(jié)數(shù) 
 26.Concurrency Level:      900 #請求的并發(fā)數(shù),代表著訪問的客戶端數(shù)量
 27.Time taken for tests:   0.489 seconds #整個測試花費的時間
 28.Complete requests:      1000 #成功的請求數(shù)量
 29.Failed requests:        0 #失敗的請求數(shù)量
 30.Write errors:           0
 31.Total transferred:      267000 bytes #整個測試過程的總數(shù)據(jù)大小(包括header頭信息等)
 32.HTML transferred:       9000 bytes #整個測試過程HTML頁面實際的字節(jié)數(shù)
 33.Requests per second:    2045.81 [#/sec] (mean) #每秒處理的請求數(shù),這是非常重要的參數(shù),體現(xiàn)了服務(wù)器的吞吐量                                               
 34.
 35.            #后面括號中的 mean 表示這是一個平均值
 36.Time per request:       439.923 [ms] (mean) #平均請求響應(yīng)時間,括號中的 mean 表示這是一個平均值
 37.#每個請求的時間 0.489[毫秒],意思為在所有的并發(fā)請求每個請求實際運行時間的平均值
 38.#由于對于并發(fā)請求 cpu 實際上并不是同時處理的,而是按照每個請求獲得的時間片逐個輪轉(zhuǎn)處理的
 39.#所以基本上第一個 Time per request 時間約等于第二個 Time per request 時間乘以并發(fā)請求數(shù)
 40.Time per request:       0.489 [ms] (mean, across all concurrent requests) 
 41. 
 42.Transfer rate:          533.43 [Kbytes/sec] received #傳輸速率,平均每秒的流量
 43.                                                      #可以幫助排除是否存在網(wǎng)絡(luò)流量過大導致響應(yīng)時間延長的問題
 44. Connection Times (ms) #連接時間              
 45. 
 46.           min  mean[+/-sd]#平均時間和標準差 median#中位數(shù)   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) #在一定的時間內(nèi)提供服務(wù)的請求的百分比
 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作為一款高效、輕量的壓力測試工具,雖然在圖形化界面和實時監(jiān)控上有所欠缺,但它憑借簡單易用的特性,仍然是日常工作中快速檢測服務(wù)器性能的首選工具之一。通過合理配置參數(shù)并分析測試結(jié)果,用戶能夠?qū)Ψ?wù)器性能有更深入的了解,從而為進一步的優(yōu)化和改進提供有力依據(jù)。

想了解更多Linux相關(guān)的分享歡迎上藍隊云官網(wǎng)查詢,更多免費技術(shù)學習文檔,藍隊云期待與您一起探索。


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

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

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

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