原文:https://blog.csdn.net/Jerome_s/article/details/47030671php
負載生成器是一些生成用於測試的流量的程序。它們能夠向你展現服務器在高負載的狀況下的性能,以及讓你可以找出服務器可能存在的問題。爲了獲得更加客觀和準確的數值,應該從遠程訪問、局域網訪問和本地等多個方面進行全方位的測試。通常用127.0.0.1進行本機測試。html
2. 使用node
爲了不由於網絡緣由而致使服務器壓力測試結果不許確,通常能夠用 ab -n 100 -c 50 http://127.0.0.1/index.php 來測試本身服務器Web性能。全部 ab 命令的組成遵循此結構: ab [options] [full path to web document] 。linux
標記web |
描述vim |
-A bash <username>:<password>服務器 |
用於提供服務器身份驗證信息。cookie 用戶名和密碼用「:」分隔。網絡 發送的字符串採用base64編碼 |
-c <concurrency number> |
一次模擬的請求數。默認情 況下設置爲1。數量不得大於n值 |
-C cookie-name=value |
可重複的標記,包含cookie信息 |
-d |
隱藏「percentage served within XX[ms] table」 |
標記 |
描述 |
-e |
要建立的.csv文件的路徑。該文件包 含運行的基準測試的結果,該結果分爲 兩列,即Percentage和Time in ms。建議 採用「gnuplot」文件 |
-g |
要建立的「gnuplot」或TSV文件的路徑。 基準測試的輸出將保存到該文件中 |
-h |
顯示要用於ab的選項列表 |
-H custom-header |
採用字段值對形式發送有效標頭和請求 |
-i |
執行HEAD請求,而不是默認的GET請求 |
-k |
啓用Keep-Alive功能。容許經過一個 HTTP會話知足多個請求。默認狀況下, 該功能處於禁用狀態 |
-n requests |
要執行的請求總數 |
-p POST-file |
包含用於HTTP POST請求的數據的 文件路徑。內容應該包含由&分隔的鍵=值對 |
-P username:password |
採用Base64編碼的字符串。字符串包含 基自己份驗證,以及由「:」分隔的用戶名和密碼 |
-q |
執行多於100個請求時隱藏進度輸出 |
-s |
使用https協議,而非默認的http協議 ——不建議這樣作 |
-S |
隱藏中位數和標準誤差值 |
-t timelimit |
指定了這個值之後,基準測試的時間 不會超過指定的值。默認狀況下無時間限制 |
-v verbosity-level |
數值爲2及以上將打印警告和信息; 爲3將打印HTTP響應代碼;4及以 上將打印標頭信息 |
-V |
顯示ab工具的版本號 |
-w |
採用HTML表格打印結果 |
-x <table-attributes> |
表示HTML屬性的字符串, 使用–w時將放置在<table>標記中 |
-X proxy[:port] |
指定要使用的代理服務器。 代理端口是可選的 |
-y <tr-attributes> |
表示HTML屬性的字符串, 使用–w時將放置在<tr>標記中 |
-z <td-attributes> |
表示HTML屬性的字符串, 使用–w時將放置在<td>標記中 |
字段 |
描述 |
示 例 值 |
Concurrency Level |
所進行的併發請求總數 |
1,2,3,…,n, 其中n爲任意數字 |
Time taken for tests |
運行所花費的總時間 |
000.000秒 |
Complete requests |
模擬的請求總數中已 完成的請求總數 |
1,2,3,…,n, 其中n爲任意數字 |
字段 |
描述 |
示 例 值 |
Failed requests |
模擬的請求總數 中失敗的請求總數 |
1,2,3, …,n, 其中n爲任意數字 |
Write errors |
使用寫入數據時 遇到的錯誤總數 |
1,2,3, …,n, 其中n爲任意數字 |
Non-2×× responses |
未收到HTTP成功 響應的請求總數(200) |
1,2,3,…,n, 其中n爲任意數字 |
Total transferred |
整個模擬的響應中 傳輸的總數據, 大小包括標頭數據 |
725個字節 |
HTML transferred |
整個模擬傳輸的內容 正文的總大小 |
137 199個字節 |
Requests per second |
每秒支持的請求總數 |
5.68 [#/秒] (平均值) |
Time per request |
知足一個請求須要 花費的總時間 |
176.179毫秒 |
Time per request |
知足全部併發請求 中的一個請求須要 花費的總時間 |
176.179毫秒 |
Transfer rate |
每秒收到的字節總數(KB) |
766.27 [KB/秒] |
Webbench 最多能夠模擬3萬個併發鏈接數來測試服務器壓力,能夠設置壓力測試時間和測試請求的成功率。
1. 安裝:
wget http://blog.s135.com/soft/linux/webbench/webbench-1.5.tar.gz tar zxvf webbench-1.5.tar.gz cd webbench-1.5 make && make install
若是在編譯webbench的時候,出現/bin/sh: ctags: command not found,以下所示
[root@webbench-1.5]# make cc -Wall -ggdb -W -O -c -o webbench.o webbench.c webbench.c: In function ‘alarm_handler’: webbench.c:77: warning: unused parameter ’signal’ cc -Wall -ggdb -W -O -o webbench webbench.o ctags *.c /bin/sh: ctags: command not found make: [tags] Error 127 (ignored)
是沒安裝ctags組件,使用yum -y install ctags,解決問題
若是安裝了ctags, 仍然報錯:
install -s webbench /usr/local/bin install -m 644 webbench.1 /usr/local/man/man1 install: cannot create regular file `/usr/local/man/man1′: No such file or directory
報錯:make: *** [install] Error 1
解決方法
mkdir -m 644 -p /usr/local/man/man1
2. 使用
webbench -c 1000 -t 10 http://www.qq.com/index.php -c是併發數 -t是運行測試時間,即10秒鐘內中以每次100個請求進行測試。
這是運行Webbench測試結果,Speed顯示的是每分鐘響應請求數和每秒鐘傳輸數據量,Requests顯示的是成功請求數和失敗請求數。
爲準確獲得服務器的承受壓力,測試時併發數可逐漸加大,如併發100時觀察一下網站負載是多少、打開頁面是否流暢,當網站打開緩慢時併發是多少、網站打不開時併發又是多少。
Tsung 是一款重型的(heavy-duty)、分佈式的、多協議測試工具。它每秒基本能夠產生 40,000 個請求,這絕對是咱們想要的工具。相似於 Jmeter,你能夠把一些行爲記錄下來在測試時運行,而且能夠測試大多數的協議。好比 SSL、HHTP、WebDAV、SOAP、PostgreSQL、MySQL、LDAP 和 Jabber/XMPP。與 Jmeter 不一樣的是,它沒有讓人感到迷茫的 GUI 設置,它僅有一個 XML 配置文件,和一些你選擇的分佈式節點的 SSH 密鑰。它的簡潔和效率對個人吸引力,徹底不亞於它的健壯性和可擴展性。我發現它是一個很強大的工具,在正確的配置下它能夠每秒產生百萬級的 HTTP 請求。
1
|
yum -y
install
erlang perl perl-RRD-Simple.noarch perl-Log-Log4perl-RRDs.noarch gnuplot perl-Template-Toolkit firefox
|
1
|
wget http:
//tsung
.erlang-projects.org
/dist/tsung-1
.4.2.
tar
.gz
|
1
2
3
|
tar
zxfv tsung-1.4.2.
tar
.gz
cd
tsung-1.4.2
.
/configure
&&
make
&&
make
install
|
1
|
cp
/usr/share/doc/tsung/examples/http_simple
.xml
/root/
.tsung
/tsung
.xml
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
<?
xml
version
=
"1.0"
?>
<!DOCTYPE tsung SYSTEM "/usr/share/tsung/tsung-1.0.dtd">
<
tsung
loglevel
=
"notice"
version
=
"1.0"
>
<
clients
>
<
client
host
=
"localhost"
weight
=
"1"
cpu
=
"10"
maxusers
=
"40000"
>
<
ip
value
=
"192.168.122.2"
/>
</
client
>
<
client
host
=
"loadnode1"
weight
=
"1"
cpu
=
"9"
maxusers
=
"40000"
>
<
ip
value
=
"192.168.122.2"
/>
</
client
>
<
client
host
=
"loadnode2"
weight
=
"1"
maxusers
=
"40000"
cpu
=
"8"
>
<
ip
value
=
"192.168.122.3"
/>
</
client
>
<
client
host
=
"loadnode3"
weight
=
"1"
maxusers
=
"40000"
cpu
=
"9"
>
<
ip
value
=
"192.168.122.21"
/>
</
client
>
<
client
host
=
"loadnode4"
weight
=
"1"
maxusers
=
"40000"
cpu
=
"9"
>
<
ip
value
=
"192.168.122.11"
/>
</
client
>
<
client
host
=
"loadnode5"
weight
=
"1"
maxusers
=
"40000"
cpu
=
"9"
>
<
ip
value
=
"192.168.122.12"
/>
</
client
>
<
client
host
=
"loadnode6"
weight
=
"1"
maxusers
=
"40000"
cpu
=
"9"
>
<
ip
value
=
"192.168.122.13"
/>
</
client
>
<
client
host
=
"loadnode7"
weight
=
"1"
maxusers
=
"40000"
cpu
=
"9"
>
<
ip
value
=
"192.168.122.14"
/>
</
client
>
</
clients
>
<
servers
>
<
server
host
=
"192.168.122.10"
port
=
"80"
type
=
"tcp"
/>
</
servers
>
<
load
>
<
arrivalphase
phase
=
"1"
duration
=
"10"
unit
=
"minute"
>
<
users
maxnumber
=
"15000"
arrivalrate
=
"8"
unit
=
"second"
/>
</
arrivalphase
>
<
arrivalphase
phase
=
"2"
duration
=
"10"
unit
=
"minute"
>
<
users
maxnumber
=
"15000"
arrivalrate
=
"8"
unit
=
"second"
/>
</
arrivalphase
>
<
arrivalphase
phase
=
"3"
duration
=
"30"
unit
=
"minute"
>
<
users
maxnumber
=
"20000"
arrivalrate
=
"3"
unit
=
"second"
/>
</
arrivalphase
>
</
load
>
<
sessions
>
<
session
probability
=
"100"
name
=
"ab"
type
=
"ts_http"
>
<
for
from
=
"1"
to
=
"10000000"
var
=
"i"
>
<
request
> <
http
url
=
"/test.txt"
method
=
"GET"
version
=
"1.1"
/> </
request
>
</
for
>
</
session
>
</
sessions
>
</
tsung
>
|
vim ~/.bashrc
alias
treport=
"/usr/lib/tsung/bin/tsung_stats.pl; firefox report.html"
|
1
|
source
~/.bashrc
|
1
2
3
|
[root@loadnode1 ~] tsung start
Starting Tsung
"Log directory is: /root/.tsung/log/20120421-1004"
|
1
2
|
cd
/root/
.tsung
/log/20120421-1004
treport #生成圖片報告
|