1. 程式人生 > >ab引數詳解 – 壓力測試

ab引數詳解 – 壓力測試

Apache附帶的ab,它非常容易使用,ab可以直接在Web伺服器本地發起測試請求。這至關重要,因為我們希望測試的伺服器的處理時間,而不包含資料的網路傳輸時間以及使用者PC本地的計算時間。

需要清楚的是,ab進行一切測試的本質都是基於HTTP,所以可以說它是對於Web伺服器軟體的黑盒效能測試,它獲得的一切資料和計算結果,都可以通過HTTP來解釋。

另有一些壓力測試軟體,包括LoadRnner、Jmeter等,則是不同程度上包含了伺服器處理之外的時間,比如LoadRunner執行在使用者PC上,可以錄製瀏覽器行為,這種測試的結果玩玩側重於站點使用者的角度,有另外一些層面的參考意義。

接下來,將使用ab來進行一次壓力測試,在本書中我們使用Apache 2.3中附帶的ab,其版本資訊如下所示:

[[email protected] ~]#/usr/local/apache/bin/ab -VThisisApacheBench,Version2.3<$Revision:655654 $>Copyright1996AdamTwiss,ZeusTechnologyLtd, http://www.zeustech.net/Licensed to TheApacheSoftwareFoundation, http://www.apache.org/

請看下面的命令列資訊:

[[email protected] ~]#/usr/local/apache/bin/ab -n1000 -c10 http://localhost/index.htmlThisisApacheBench,Version2.3<$Revision:655654 $>Copyright1996AdamTwiss,ZeusTechnologyLtd, http://www.zeustech.net/Licensed to TheApacheSoftwareFoundation, http://www.apache.org/Benchmarking localhost (be patient)Completed
100 requests Completed200 requests Completed300 requests Completed400 requests Completed500 requests Completed600 requests Completed700 requests Completed800 requests Completed900 requests Completed1000 requests Finished1000 requests ServerSoftware:Apache/2.2.19ServerHostname: localhost ServerPort:80DocumentPath:/index.html DocumentLength:45 bytes ConcurrencyLevel:10Time taken for tests:0.454 seconds Complete requests:1000Failed requests:0Write errors:0Total transferred:322644 bytes HTML transferred:45090 bytes Requests per second:2204.64[#/sec] (mean)Time per request:4.536[ms](mean)Time per request:0.454[ms](mean, across all concurrent requests)Transfer rate:694.64[Kbytes/sec] received ConnectionTimes(ms) min mean[+/-sd] median max Connect:010.515Processing:135.6262Waiting:035.6262Total:145.6363Percentage of the requests served within a certain time (ms)50%366%475%480%490%695%1298%2699%33100%63(longest request)

請注意我們在啟動ab時,傳入3個命令列引數,它們正是代表了前面提到的前提條件:
-n1000 表示總請求數位1000
-c 表示併發使用者數為10
http://localhost/index.html 表示這些請求的目標URL。
測試結果一目瞭然,我們看到吞吐率顯示為2204.64reqs/s。同時,在測試結果中還有一些其他內容也值得我們關注,主要包括:
Server Software
表示被測試的Web伺服器軟體名稱,這裡是Apache/2.2.19,它來自於http響應資料的頭資訊,所以如果是我們自己編寫的Web伺服器軟或者修改開源Web伺服器軟體的原始碼,便可以隨意改寫這裡的名稱。
vi /usr/local/apache/conf/httpd.conf #隱藏具體版本資訊
ServerSignature Off
ServerTokens Prod

Server Hostname
表示請求的URL中的主機部分名稱,它來自於http請求資料的頭資訊,這裡我們請求的URL是http://localhost/index.html,所以主機名為localhost,說明我們的請求是從Web伺服器端發起的。

Server Port
表示被測試的Web伺服器軟體的監聽埠,為了方便測試,我們後面會對多個不同的Web伺服器軟體使用不同的監聽埠。

Document Path
表示請求的URL中根絕對路徑,它同樣來自於http請求資料的頭資訊,通過它的字尾名,我們一般可以理解該請求的型別。

Document Length
表示http響應資料的正文長度。

Concurrency Level
表示併發使用者數,這是我們設定的引數。

Time taken for tests
表示所有這些請求被處理完成花費的總時間。順便提一下,某些Apache版本如2.2.4附帶的ab,對於這一統計項存在一些計算上的bug,當總請求數較少時,其統計的總時間會無法小於0.1s。

Complete requests
表示總請求數,這是我們設定的相應引數。

Failed requests
表示失敗的請求數,這裡的失敗是指請求的連線伺服器、傳送資料、接收資料等環節發生異常,以及無響應後超時的情況。對於超時時間的設定可以用ab的-t引數。
而如果接受到的http響應資料的頭資訊中含有2xx以外的狀態碼,則會在測試結果顯示另一個名為“Non-2xx responses”的統計項,用於統計這部分請求數,這些請求並不算是失敗的請求。

Total transferred
表示所有請求的響應資料長度總和,包括每個http響應資料的頭資訊和正文資料的長度。注意這裡不包括http請求資料的長度,所以Total
transferred代表了從Web伺服器流向使用者PC的應用層資料總長度。通過使用ab的-v引數即可檢視詳細的http頭資訊。

HTML transferred
表示所有請求的響應資料中正文資料的總和,也就是減去了Total transferred中http響應資料中頭資訊的長度。

Requests per second
這便是我們重點關注的吞吐率,它等於:
Complete requests / Time taken for tests

Time per request
這便是前面提到的使用者平均請求等待時間,它等於:
Time taken for tests / (Complete requests /Concurrency Level)

Time per request?(across all concurrent requests)
這便是前面提到的伺服器平均請求處理時間,它等於:
Time taken for tests / Complete requests

這正是吞吐率的倒數。同時,它也等於:
Time per request / Concurrency Level

Transfer rate
表示這些請求在單位時間內從伺服器獲取的資料長度,它等於:
Total transferred / Time taken for tests
這個統計項可以很好的說明伺服器在處理能力達到限制時,其出口頻寬的需求量。
利用前面介紹的有關頻寬的知識,不難計算出結果。

Percentage of the requests served within a certain time(ms)
這部分資料用於描述每個請求處理時間的分佈情況,比如在以上測試結果中,80%請求的處理時間都不超過1ms,而99%的請求都不超過2ms。注意這裡的處理時間,是指前面的Time per request,即對於單個使用者而言,平均每個請求處理的時間。

繼續壓力測試
下面,我們再來進行一次壓力測試,此時併發使用者數為100,其他條件不變,測試結果如下所示:

[
            
           

相關推薦

ab引數壓力測試

Apache附帶的ab,它非常容易使用,ab可以直接在Web伺服器本地發起測試請求。這至關重要,因為我們希望測試的伺服器的處理時間,而不包含資料的網路傳輸時間以及使用者PC本地的計算時間。 需要清楚的是,ab進行一切測試的本質都是基於HTTP,所以可以說它是對於Web伺服器軟體的黑盒效能測試,它

圖文壓力測試工具JMeter的安裝與使用

壓力測試是目前大型網站系統的設計和開發中不可或缺的環節,通常會和容量預估等工作結合在一起,穿插在系統開發的不同方案。壓力測試可以幫助我們及時發現系統的效能短板和瓶頸問題,在這個基礎在上再進行鍼對性的效能優化,也可以幫助我們預估系統的承載能力,使我們能根據其做出一些應對措施。 ### JMeter簡介 ![]

linux下安裝ab壓力測試工具及ab命令

yum -y install httpd-tools ab -v 檢視ab版本 ab –help ab -n1000 -c 10 http://www.xxxx.com/ 以上命令-n訪問1000次, -c併發10個 ab壓力測試返回報文內容詳解: Server Soft

Linux壓力測試工具stress的引數

為了測試根據伺服器的負載情況,給大家推薦下stress這個壓力測試工具,具體安裝方式就不說了,本文主要介紹下stress的命令引數,大家可以在環境上驗證測試下。 引數說明: -? 顯示幫助資訊 -v 顯示版本號 -q 不顯示執行資訊 -n 顯示已

壓力測試工具、Web效能壓力測試工具ApacheBench(ab

網站效能壓力測試是效能調優過程中必不可少的一環。只有讓伺服器處在高壓情況下才能真正體現出各種設定所暴露的問題。Apache中有個自帶的,名為ab的程式,可以對Apache或其它型別的伺服器進行網站訪問壓力測試。 ApacheBench命令原理: ab命令會建立很

Monkey測試引數

轉自:http://blog.csdn.net/huangbiao86/article/details/8490743 一、Monkey測試簡介 Monkey測試是Android平臺自動化測試的一種手段,通過Monkey程式模擬使用者觸控式螢幕幕、滑動Trackball

apache的效能測試工具ab使用

網站效能壓力測試是伺服器網站效能調優過程中必不可缺少的一環。只有讓伺服器處在高壓情況下,才能真正體現出軟體、硬體等各種設定不當所暴露出的問題。 效能測試工具目前最常見的有以下幾種:ab、http_load、webbench、siege。今天我們專門來介紹ab。

Apache性能測試工具ab使用~轉載

默認 由於 分析 打開 點擊 second apach 測試工具 com Apache自帶性能測試工具ab使用詳解 一、 Apache的下載 1、 http://www.apache.org/,進入Apache的官網 2、 將頁面拖到最下方“Apache Project L

使用ab對網站進行壓力測試

進行 壓力 測試 oca tools ray local too install 1、安裝yum install httpd-tools 2、ab -kc 1000 -n 1000 http://localhost/ab.html 這個指令會使用1000個並發,進行連接

mencoder和ffmpeg引數2 (轉)

有很多軟體能夠擷取影片影象、合併影象,但如果影片太多,比如視訊網站為使用者上傳的影象生成預覽圖之類的,人工在gui方式下操作就不可取了,我們需要在命令列方式下來擷取、合併。 首先,擷取影片影象使用最多的就是mplayer或者ffmpeg,我用mplayer比較熟,本文就以此為例了,ffmpe

學習筆記--JDK中的URLConnection引數

JDK中的URLConnection引數詳解 針對JDK中的URLConnection連線Servlet的問題,網上有雖然有所涉及,但是隻是說明了某一個或幾個問題,是以FAQ的方式來解決的,而且比較零散,現在對這個類的使用就本人在專案中的使用經驗做如下總結:  1:>

MySQL 8.0.12 mysqlbinlog命令引數

1.版本號不同: # /usr/local/mysql57/bin/mysqlbinlog --version /usr/local/mysql57/bin/mysqlbinlog Ver 3.4 for linux-glibc2.12 at x86_64 # /usr/local/mysql8

maven配置引數

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apach

資料庫mysqldump指令引數

資料庫mysqldump命令引數詳解 --all-databases , -A 匯出全部資料庫。 mysqldump -uroot -p --all-databases --all-tablespaces , -Y 匯出全部表空間。 mysqldump -uroot -p --all-databa

sklearn 神經網路MLPclassifier引數

class sklearn.neural_network.MLPClassifier(hidden_layer_sizes=(100, ), activation=’relu’, solver=’adam’, alpha=0.0001, batch_size=’auto’, learnin

jQuery非同步請求ajax()之complete引數

請求完成後回撥函式 (請求success 和 error之後均呼叫)。這個回撥函式得到2個引數:XMLHTTPRequest) 物件和一個描述請求狀態的字串("success", "notmodified", "nocontent","error", "timeout", "abort", 或者 "

配置 sysctl.conf 系統引數

配置 sysctl.conf 系統引數(vi /etc/sysctl.conf) 引數: 1.記憶體&快取 kernel.sysrq = 0 核心設定驗證為0 kernel.core_uses_pid = 1 控制核心的系統請求除錯功能開啟,控制核心轉儲附加PID到核心檔名,適用於多

Springboot專案java -jar 啟動jar包引數

命令例項: nohup java -Xms500m -Xmx500m -Xmn250m -Xss256k -server -XX:+HeapDumpOnOutOfMemoryError -jar $JAR_PATH/test-0.0.1-SNAPSHOT.jar --spring.profile

Post方式與引數

定義和用法 enctype 屬性規定在傳送到伺服器之前應該如何對錶單資料進行編碼。 預設地,表單資料會編碼為 "application/x-www-form-urlencoded"。就是說,在傳送到伺服器之前,所有字元都會進行編碼(空格轉換為 "+" 加號,特殊符號轉換為 ASCII HEX 值

RabbitMQ-Channel引數

- channel.exchangeDeclare(): type:有direct、fanout、topic三種 durable:true、false true:伺服器重啟會保留下來Exchange。警告:僅設定此選項,不代表訊息持久化。即不保證重啟後訊息還在。原文:true if we