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