Nginx應(yīng)用案例分享:壓力測試
原創(chuàng)【51CTO獨(dú)家特稿】在運(yùn)維工作中,壓力測試是一項(xiàng)非常重要的工作。比如在一個網(wǎng)站上線之前,能承受多大訪問量、在大訪問量情況下性能怎樣,這些數(shù)據(jù)指標(biāo)好壞將會直接影響用戶體驗(yàn)。
但是,在壓力測試中存在一個共性,那就是壓力測試的結(jié)果與實(shí)際負(fù)載結(jié)果不會完全相同,就算壓力測試工作做的再好,也不能保證100%和線上性能指標(biāo)相同。面對這些問題,我們只能盡量去想方設(shè)法去模擬。所以,壓力測試非常有必要,有了這些數(shù)據(jù),我們就能對自己做維護(hù)的平臺做到心中有數(shù)。
目前較為常見的網(wǎng)站壓力測試工具有webbench、ab(apache bench)、tcpcopy、loadrunner
軟件名稱
|
簡介
|
優(yōu)缺點(diǎn)
|
webbench
|
由Lionbridge公司開發(fā),主要測試每秒鐘請求數(shù)和每秒鐘數(shù)據(jù)傳輸量,同時支持靜態(tài)、動態(tài)、SSL
|
部署簡單,靜動態(tài)均可測試。適用于小型網(wǎng)站壓力測試(單例最多可模擬3萬并發(fā))
|
ab(apache bench)
|
Apache自帶的壓力測試工具,主要功能用于測試網(wǎng)站每秒鐘處理請求個數(shù)
|
多見用于靜態(tài)壓力測試,功能較弱,非專業(yè)壓力測試工具
|
tcpcopy
|
基于底層應(yīng)用請求復(fù)制,可轉(zhuǎn)發(fā)各種在線請求到測試服務(wù)器,具有分布式壓力測試功能,所測試數(shù)據(jù)與實(shí)際生產(chǎn)數(shù)據(jù)較為接近
|
后起之秀,主要用于中大型壓力測試,所有基于 tcp的packets均可測試 |
loadrunner
|
壓力測試界的泰斗,可以創(chuàng)建虛擬用戶,可以模擬用戶真實(shí)訪問流程從而錄制成腳本,其測試結(jié)果也最為逼真
|
模擬最為逼真,并可進(jìn)行獨(dú)立的單元測試,但是部署配置較為復(fù)雜,需要專業(yè)人員才可以。
|
下面,筆者就以webbench為例,來講解一下網(wǎng)站在上線之前壓力測試是如何做的。
安裝webbench
#wget http://home.tiscali.cz/~cz210552/distfiles/webbench-1.5.tar.gz #tar zxvf webbench-1.5.tar.gz #cd webbench-1.5 #make && make install
進(jìn)行壓力測試
并發(fā)200時
# webbench -c 200 -t 60 http://blog.luwenju.com/index.php
參數(shù)解釋:-c為并發(fā)數(shù),-t為時間(秒)
Webbench - Simple Web Benchmark 1.5 Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software. Benchmarking: GET http://blog.luwenju.com/index.php 200 clients, running 60 sec. Speed=1454 pages/min, 2153340 bytes/sec. Requests: 1454 susceed, 0 failed.
當(dāng)并發(fā)200時,網(wǎng)站訪問速度正常
并發(fā)800時
#webbench -c 800 -t 60 http://blog.luwenju.com/index.php Webbench - Simple Web Benchmark 1.5 Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software. Benchmarking: GET http://blog.luwenju.com/index.php 800 clients, running 60 sec. Speed=1194 pages/min, 2057881 bytes/sec. Requests: 1185 susceed, 9 failed.
當(dāng)并發(fā)連接為800時,網(wǎng)站訪問速度稍慢
并發(fā)1600時
#webbench -c 1600 -t 60 http://blog.luwenju.com/index.php Webbench - Simple Web Benchmark 1.5 Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software. Benchmarking: GET http://blog.luwenju.com/index.php 1600 clients, running 60 sec. Speed=1256 pages/min, 1983506 bytes/sec. Requests: 1183 susceed, 73 failed.
當(dāng)并發(fā)連接為1600時,網(wǎng)站訪問速度便非常慢了
并發(fā)2000時
#webbench -c 2000 -t 60 http://blog.luwenju.com/index.php Webbench - Simple Web Benchmark 1.5 Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software. Benchmarking: GET http://blog.luwenju.com/index.php 2000 clients, running 60 sec. Speed=2154 pages/min, 1968292 bytes/sec. Requests: 2076 susceed, 78 failed.
當(dāng)并發(fā)2000時,網(wǎng)站便出現(xiàn)“502 Bad Gateway”,由此可見web服務(wù)器已無法再處理用戶訪問請求
總結(jié):
1、壓力測試工作應(yīng)該放到產(chǎn)品上線之前,而不是上線以后
2、測試時盡量跨公網(wǎng)進(jìn)行,而不是內(nèi)網(wǎng)
3、測試時并發(fā)應(yīng)當(dāng)由小逐漸加大,比如并發(fā)100時觀察一下網(wǎng)站負(fù)載是多少、打開是否流程,并發(fā)200時又是多少、網(wǎng)站打開緩慢時并發(fā)是多少、網(wǎng)站打不開時并發(fā)又是多少
4、 應(yīng)盡量進(jìn)行單元測試,如B2C網(wǎng)站可以著重測試購物車、推廣頁面等,因?yàn)檫@些頁面占整個網(wǎng)站訪問量比重較大
【51CTO獨(dú)家特稿,轉(zhuǎn)載請注明原文出處】
作者簡介:陸文舉(微博),85后,一個整天跟機(jī)器打交道的山東人。
【編輯推薦】