怎樣正確做 Web 應(yīng)用的壓力測試混驰?

怎樣正確做 Web 應(yīng)用的壓力測試?

16 人贊同了該回答

面試的時候凳厢,很多后端或者QA的候選人都會跟我講說有過壓力測試的經(jīng)驗账胧,但在我細問之后,極少有候選人能夠把壓力測試細節(jié)講清楚先紫。

這里整理一下我認為做壓力測試時需要注意的一些細節(jié)。

環(huán)境

首先環(huán)境是非常重要的筹煮,需要盡可能跟生產(chǎn)環(huán)境靠近遮精。

比方說,使用同樣的nginx版本败潦,php的話需要啟用fpm本冲,zend-optimizer等等,參數(shù)配置也最好跟生產(chǎn)環(huán)境保持一致劫扒。

當(dāng)然檬洞,php的版本更加需要保持一致,不能說線上是跑5.3沟饥,而測試環(huán)境卻是php 7添怔;除非是要測試不同php版本的性能。

網(wǎng)絡(luò)也需要注意贤旷,測試機跟服務(wù)器之間是什么網(wǎng)絡(luò)連接广料?100M還是千兆的網(wǎng)線?也同樣需要跟生產(chǎn)環(huán)境盡可能保持一致幼驶。

我曾經(jīng)看過有人直接在自己的筆記本上跑壓測的客戶端艾杏,然后筆記本使用的wifi;這直接就變成是在測試wifi的性能了盅藻。

當(dāng)然购桑,也可以考慮直接在服務(wù)器本機上面跑壓測程序,這樣就可以規(guī)避掉網(wǎng)絡(luò)層的氏淑,更有針對的去看服務(wù)器應(yīng)用的性能勃蜘;但那就要注意壓測程序本身是否會占用過多的CPU、內(nèi)存等資源而影響到服務(wù)器應(yīng)用夸政。

在測試高并發(fā)的場景下元旬,也要注意修改linux的open files limit:

ulimit -n

命令可以顯示file descriptors的值,這值默認是1024;也就是說匀归,最多只能開1024個并發(fā)連接坑资;一般情況下夠用。

如果需要測試C10K甚至更高的并發(fā)場景時穆端,這個值就必須修改了袱贮;關(guān)于ulimit命令的詳細使用,可以參考這里

工具

最常見的web壓測工具是ab - apache benchmark体啰;我偶爾會拿ab來做簡單的快速測試攒巍。但做嚴格的測試時,ab就會顯得非常不合適荒勇。

首先柒莉,ab是單線程程序,只能利用單一CPU沽翔,在給性能好的服務(wù)器端應(yīng)用做壓測時兢孝,往往跑ab的測試機負荷滿了;而服務(wù)器應(yīng)用的性能還綽綽有余仅偎。

這在測試默認啟用多核的go程序是非常常見的跨蟹。

建議至少使用techempower所用的wrk替代ab;wrk默認可以利用單一CPU的多個核橘沥。

其次窗轩,ab僅能是對單一url進行壓測,而當(dāng)我們僅僅只是反復(fù)測試單一URL時座咆,出來的測試結(jié)果往往不能提現(xiàn)真實的壓力場景痢艺。

比方說,應(yīng)用程序反復(fù)查詢箫措、返回同一個賬號的資料腹备,跟隨機查詢、返回十萬個用戶是不一樣的斤蔓;前者的返回結(jié)果很容易就被數(shù)據(jù)庫植酥、應(yīng)用給“緩存”掉。而對于被嚴重“緩存”的性能測試結(jié)果弦牡,并不能很好的反應(yīng)真實場景下的性能表現(xiàn)友驮。

如果要模擬真實的壓測場景,我會推薦使用siege驾锰,siege的有多個參數(shù)方便模擬真實壓力場景:

-f FILE, --file=FILE參數(shù)指定一個輸入文件卸留,在文件中指定多個不同的url,然后對這多個url進行壓測椭豫。

-i, --internet則是指定隨機發(fā)送輸入文件中的url

wrk也支持使用lua腳本去生成壓測的請求耻瑟,siege上面能做的旨指,wrk肯定也可以通過自己編寫腳本去實現(xiàn)。

瓶頸

我會認為喳整,壓測的目的是在于找到系統(tǒng)的瓶頸谆构,一定是要確定系統(tǒng)某個方面達到瓶頸了,壓力測試才算是基本完成框都。

當(dāng)我們說系統(tǒng)可以支撐某某壓力時搬素,一定要同時能夠清楚的說出系統(tǒng)的瓶頸是在哪里;也就是說魏保,當(dāng)瓶頸得到改善的時候熬尺,系統(tǒng)的性能可以得到提高。

對于web應(yīng)用谓罗,系統(tǒng)的瓶頸往往會是數(shù)據(jù)庫粱哼;系統(tǒng)滿負荷運作的時候,數(shù)據(jù)庫的CPU或者是磁盤IO是否跑滿了檩咱?

如果沒有皂吮,那么很可能是說明瓶頸是在別的地方;如果是在應(yīng)用税手,那么應(yīng)用服務(wù)器的CPU、內(nèi)存需纳、IO等等也應(yīng)該有所體現(xiàn)芦倒。

找到系統(tǒng)的瓶頸,是需要反復(fù)做不同測試不翩、優(yōu)化兵扬,然后分析出來的。

對于一些性能有高要求的公司口蝠,比方說七牛云器钟,據(jù)說他們只接受網(wǎng)絡(luò)IO這一瓶頸,壓測的時候妙蔗,是一定要把千兆網(wǎng)卡跑滿傲霸,才算是性能達標(biāo);如果網(wǎng)卡沒跑滿眉反,那就說明瓶頸是在別的地方昙啄,要去不斷優(yōu)化,直到網(wǎng)卡的物理限制成為系統(tǒng)的瓶頸寸五。

延遲與吞吐

延遲latency與吞吐thoughput梳凛,是兩個相關(guān),但其實獨立的概念梳杏。

最理想的系統(tǒng)是低延遲韧拒,高吞吐淹接;但有時高延遲的系統(tǒng),吞吐是可以超過低延遲的系統(tǒng)的叛溢。

最后

偶已經(jīng)離開一線開發(fā)好幾年塑悼,上述都是根據(jù)我差不多5年前的記憶寫的,一定會有錯漏之處雇初,還望讀者指正哈拢肆!翁偉這里先謝過大家。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末靖诗,一起剝皮案震驚了整個濱河市郭怪,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌刊橘,老刑警劉巖鄙才,帶你破解...
    沈念sama閱讀 216,843評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異促绵,居然都是意外死亡攒庵,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評論 3 392
  • 文/潘曉璐 我一進店門败晴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來浓冒,“玉大人,你說我怎么就攤上這事尖坤∥壤粒” “怎么了?”我有些...
    開封第一講書人閱讀 163,187評論 0 353
  • 文/不壞的土叔 我叫張陵慢味,是天一觀的道長场梆。 經(jīng)常有香客問我,道長纯路,這世上最難降的妖魔是什么或油? 我笑而不...
    開封第一講書人閱讀 58,264評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮驰唬,結(jié)果婚禮上顶岸,老公的妹妹穿的比我還像新娘。我一直安慰自己蜕琴,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,289評論 6 390
  • 文/花漫 我一把揭開白布凌简。 她就那樣靜靜地躺著,像睡著了一般恃逻。 火紅的嫁衣襯著肌膚如雪雏搂。 梳的紋絲不亂的頭發(fā)上藕施,一...
    開封第一講書人閱讀 51,231評論 1 299
  • 那天,我揣著相機與錄音凸郑,去河邊找鬼裳食。 笑死,一個胖子當(dāng)著我的面吹牛芙沥,可吹牛的內(nèi)容都是我干的诲祸。 我是一名探鬼主播,決...
    沈念sama閱讀 40,116評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼而昨,長吁一口氣:“原來是場噩夢啊……” “哼救氯!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起歌憨,我...
    開封第一講書人閱讀 38,945評論 0 275
  • 序言:老撾萬榮一對情侶失蹤着憨,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后务嫡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體甲抖,經(jīng)...
    沈念sama閱讀 45,367評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,581評論 2 333
  • 正文 我和宋清朗相戀三年心铃,在試婚紗的時候發(fā)現(xiàn)自己被綠了准谚。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,754評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡去扣,死狀恐怖氛魁,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情厅篓,我是刑警寧澤,帶...
    沈念sama閱讀 35,458評論 5 344
  • 正文 年R本政府宣布捶码,位于F島的核電站羽氮,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏惫恼。R本人自食惡果不足惜档押,卻給世界環(huán)境...
    茶點故事閱讀 41,068評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望祈纯。 院中可真熱鬧令宿,春花似錦、人聲如沸腕窥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,692評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽簇爆。三九已至癞松,卻和暖如春爽撒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背响蓉。 一陣腳步聲響...
    開封第一講書人閱讀 32,842評論 1 269
  • 我被黑心中介騙來泰國打工硕勿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人枫甲。 一個月前我還...
    沈念sama閱讀 47,797評論 2 369
  • 正文 我出身青樓源武,卻偏偏與公主長得像,于是被迫代替她去往敵國和親想幻。 傳聞我的和親對象是個殘疾皇子粱栖,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,654評論 2 354

推薦閱讀更多精彩內(nèi)容