1. 程式人生 > >apache-ab 併發負載壓力測試

apache-ab 併發負載壓力測試

網站效能壓力測試是伺服器網站效能調優過程中必不可缺少的一環。只有讓伺服器處在高壓情況下,才能真正體現出軟體、硬體等各種設定不當所暴露出的問題。

效能測試工具目前最常見的有以下幾種:ab、http_load、webbench、siege

ab是apache自帶的壓力測試工具。ab非常實用,它不僅可以對apache伺服器進行網站訪問壓力測試,也可以對或其它型別的伺服器進行壓力測試。比如nginx、tomcat、IIS等。

一、ab 的原理(apachebench命令的縮寫)

ab命令會建立多個併發訪問執行緒,模擬多個訪問者同時對某一URL地址進行訪問。它的測試目標是基於URL的,因此,它既可以用來測試apache的負載壓力,也可以測試nginx、lighthttp、tomcat、IIS等其它Web伺服器的壓力

ab命令對發出負載的計算機要求很低,它既不會佔用很高CPU,也不會佔用很多記憶體。但卻會給目標伺服器造成巨大的負載,其原理類似CC攻擊。自己測試使用也需要注意,否則一次上太多的負載。可能造成目標伺服器資源耗完,嚴重時甚至導致宕機

二、安裝(以 Linux 環境為例 )

①原始碼安裝
②apache 通過 yum 的 RPM 包方式安裝 預設存放在 /usr/bin

1) /opt下面解壓:httpd-2.2.29.tar.gz
2) /opt下進入httpd-2.2.29資料夾:cd httpd-2.2.29
3) 安裝

在 /usr/local/web/apache 目錄下安裝Apache執行以下命令

./configure  --prefix=/usr/local/web/apache --enable-shared=max  --enable-module=rewirte  --enable-module=so

這裡寫圖片描述

由於版本問題出現以上錯誤。(Elsa 本人64 位機器出現此問題)

解決方案:

Redhat系列(包括 fedroa, centos)用命令
yum groupinstall “Development Tools”
Debian系列(包括 ubuntu) 用命令
aptitude install build-essential

本人使用的是centOs 執行 yum groupinstall “Development Tools” 命令 ,之後再重新執行

 1. ./configure --prefix=/usr/local/web/apache --enable-shared=max --enable-module=rewirte --enable-module=so

這裡寫圖片描述

執行完畢

 2. 執行 make 命令編譯
 3. 執行 make install   安裝

which ab 檢視安裝位置

which ab

③ 不想安裝Apache 但是想使用 ab 命令時可以直接安裝 Apache 的工具包 http-tools

yum -y install httpd-tools

檢視安裝是否成功

ab -V   

安裝成功則會顯示版本資訊

window 安裝
目前apache最新版2.4.10,apache官網已經沒有windows下載的版本。但是我們可以下載apache官網提供的整合軟體包

[下載地址](http://apache.fayea.com/httpd/binaries/win32/)

這裡寫圖片描述

三、引數說明

測試命令

ab [ -A auth-username:password ][ -b windowsize ][ -c concurrency ][ -C cookie-name=value ][ -d ][ -e csv-file ][ -f protocol ][ -g gnuplot-file ][ -h ][ -H custom-header ][ -i ][ -k ][ -n requests ][ -p POST-file ][ -P proxy-auth-username:password ][ -q ][ -r ][ -s ][ -S ][ -t timelimit ][ -T content-type ][ -u PUT-file ][ -v verbosity][ -V ][ -w ][ -x <table>-attributes ][ -X proxy[:port] ] [ -y <tr>-attributes ][ -z <td>-attributes ][ -Z ciphersuite ][http[s]://]hostname[:port]/path

說明:
-c concurrency 併發量
-n requests 請求數

通常使用最多的引數 -n -c

四、ab 效能指標

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

1、吞吐率(Requests per second)
2、併發連線數(The number of concurrent connections)
3、併發使用者數(Concurrency Level)
4、使用者平均請求等待時間(Time per request)
5、伺服器平均請求等待時間(Time per request:across all concurrent requests)

五、ab的應用

ab 在 Linux 系統中壓力測試安裝完事之後,直接可以測試其他任意的網站

ab -n10000 -c1000 https://101.201.142.142:443**/**

請求後面可以不新增埠號使用預設,當手動寫入時:http -80 https - 443

這裡寫圖片描述

**這裡寫圖片描述**

分析資料

Requests per second: 3684.48 [#/sec] (mean)
Requests per second: 4443.88 [#/sec] (mean)
Requests per second: 4103.85 [#/sec] (mean)
APR配置之後
Requests per second: 2079.95 [#/sec] (mean)
Requests per second: 5474.69 [#/sec] (mean) 吞吐量。每秒請求數可以衝刺到 5k 多

測試中最尾部一定要有一個“/”,否則出現以下錯誤
ab 壓測至少是10次
tomcat 是 servlet 容器,servlet 第一次編譯成jsp 檔案比較慢,但是第二次訪問不需要再次編譯,所以第一次不算數

cat /etc/httpd/conf/httpd.conf|grep -v ^#|grep -v ^$
mkdir -p /www/a.lxy.com
echo '<?php phpinfo();?>'>/www/a.lxy.com/index.php
cat /www/a.lxy.com/index.php