我的上一篇文章:Mac上Python Web的部署:Nginx+Gunicorn+Flask+Supervisor,解釋了生產(chǎn)環(huán)境的部署
那么既然用上了嗷嗷好用的web服務(wù)器,性能比f(wàn)lask等框架自帶的強(qiáng)了許多媳拴,要不來(lái)壓測(cè)一把拆火?下面就來(lái)看看如何在生產(chǎn)環(huán)境進(jìn)行壓測(cè)府适。
工具我們選用jmeter唯绍,如何使用jmeter寫壓測(cè)腳本,不在本文贅述偿荷。因此我們認(rèn)為你已經(jīng)準(zhǔn)備好了一份可以運(yùn)行的腳本窘游。
一、施壓機(jī)的準(zhǔn)備
首先準(zhǔn)備腳本的時(shí)候跳纳,可以在自己工作電腦上寫和調(diào)試忍饰。但是一般不建議直接用自己的工作電腦當(dāng)做施壓機(jī),對(duì)生產(chǎn)環(huán)境的服務(wù)器進(jìn)行壓測(cè)寺庄。
因?yàn)槲覀儽镜氐臋C(jī)器到生產(chǎn)環(huán)境上艾蓝,可能存在網(wǎng)絡(luò)等各位問(wèn)題,不一定能反映出真實(shí)的性能斗塘。因此赢织,我們需要在生產(chǎn)環(huán)境上準(zhǔn)備一臺(tái)機(jī)器,作為施壓機(jī)馍盟。
如果是在公司里面于置,一般讓運(yùn)維去搞就好了,告訴他被壓機(jī)器的網(wǎng)段贞岭,以及機(jī)器性能需求八毯,他會(huì)給你準(zhǔn)備好。然后安裝上jmeter瞄桨。
舉個(gè)例子话速,我曾經(jīng)做過(guò)實(shí)驗(yàn),對(duì)比本機(jī)和生產(chǎn)環(huán)境作為施壓機(jī)芯侥,運(yùn)行同樣的腳本泊交,得到的結(jié)果相差近10倍。因此想要得到準(zhǔn)確的結(jié)果柱查,必須使用生產(chǎn)環(huán)境的機(jī)器來(lái)施壓廓俭。
二、壓測(cè)腳本
jmeter建議只用GUI工具用來(lái)調(diào)試腳本物赶,實(shí)際運(yùn)行腳本要在命令行上運(yùn)行白指。
因?yàn)閖meter用Java開(kāi)發(fā)的留晚,圖形化本身會(huì)占用較多資源酵紫,導(dǎo)致壓測(cè)機(jī)本身能產(chǎn)生的并發(fā)少告嘲,命令行會(huì)節(jié)省圖形界面的資源開(kāi)銷。
如果是生產(chǎn)環(huán)境上的施壓機(jī)奖地,一般是純命令行的linux橄唬,自然也只能用命令行來(lái)操作。
所以你需要學(xué)會(huì)上傳壓測(cè)腳本到施壓機(jī)参歹,以及如何使用命令行啟動(dòng)jmeter執(zhí)行壓測(cè)仰楚。壓測(cè)完了之后,還需要把生成的報(bào)告等文件再下載到本機(jī)進(jìn)行整理犬庇。
上傳僧界、下載
我們通常使用rz/sz命令,和Linux服務(wù)器進(jìn)行文件上傳下載臭挽。
如果你用的終端不支持這個(gè)命令捂襟,請(qǐng)搜索并安裝。比如我的Mac就不支持欢峰。通過(guò)命令行進(jìn)行壓測(cè)
我的壓測(cè)腳本已經(jīng)上傳到了/Users/cynthia/test20190419.jmx葬荷,直接運(yùn)行下面的命令
jmeter -n -t /Users/cynthia/test20190419.jmx -l /Users/cynthia/test20190419.jtl -e -o /Users/cynthia/test20190419
這樣會(huì),生成jtl文件纽帖,和一份html格式的報(bào)告宠漩。
當(dāng)然你也可以只生成jtl文件,稍后再通過(guò)下面的命令生成報(bào)告:
jmeter -g test20190419.jtl -e -o /Users/cynthia/test20190419
- 打包上傳懊直、解壓
壓測(cè)一般都會(huì)做好幾組扒吁,也會(huì)生成很多文件,所以打包之后再傳輸?shù)奖镜乇容^方便室囊。
使用下面的命令瘦陈,就可以把/Users/cynthia/
文件夾里的所有文件,壓縮成一個(gè)包波俄,并進(jìn)行傳輸晨逝。
tar -czf cynthia20190419.tar.gz /Users/cynthia/
sz cynthia20190419.tar.gz
傳輸?shù)奖镜刂螅褂孟旅娴拿罱鈮?:
tar -xzf cynthia20190419.tar.gz
三懦铺、關(guān)注服務(wù)器的性能指標(biāo)
jmeter可以通過(guò)插件的方式來(lái)監(jiān)控服務(wù)器的各項(xiàng)指標(biāo)捉貌。不過(guò)一般公司都會(huì)有自己的監(jiān)控系統(tǒng),比如zabbix等冬念,功能更為強(qiáng)大趁窃。本文我們就用zabbix來(lái)進(jìn)行監(jiān)控。
下面來(lái)說(shuō)說(shuō)如何設(shè)置zabbix的監(jiān)控屏幕:
登錄zabbix急前,Monitoring-->Screens-->Create Screen醒陆,輸入行列新建一個(gè)面板,然后點(diǎn)進(jìn)去裆针,Edit screen刨摩,增加你想要監(jiān)控的機(jī)器相關(guān)指標(biāo)寺晌,即可。
這里可以監(jiān)控CPU load,CPU utilization,Disk space usage,Disk vda IOPS,Disk vda IO speed,Disk vda IO util,Disk vda IO wait,Free memory space,Memory usage,Network traffic,Operations read and write,Read and Write speed,Sectors read and write,Swap usage,Tcp State等等各項(xiàng)指標(biāo)澡刹。
設(shè)置好監(jiān)控屏幕之后呻征,只需要在壓測(cè)過(guò)程中查看該頁(yè)面,就可以圖形化的顯示出你所關(guān)注的服務(wù)器的性能指標(biāo)罢浇。
小提示:由于可以監(jiān)控的指標(biāo)眾多陆赋,所以建議在壓測(cè)開(kāi)始之前,根據(jù)自己的具體情況嚷闭,確定好關(guān)注的指標(biāo)攒岛,添加并監(jiān)控即可。否則添加了太多胞锰,看起來(lái)也挺累的阵子。
另外,如果還有其他人也很關(guān)注這次的壓測(cè)情況胜蛉,請(qǐng)務(wù)必提前和他溝通挠进,問(wèn)清楚他關(guān)注的指標(biāo),免得測(cè)完了才發(fā)現(xiàn)只添加了自己關(guān)注的指標(biāo)……
四誊册、數(shù)據(jù)整理
對(duì)于jmeter直接生成的報(bào)告领突,要檢查并結(jié)合實(shí)際情況,進(jìn)行整理案怯。不要看到錯(cuò)誤率很高就以為一定是真正的出錯(cuò)君旦,可能的原因有很多。
比如:
服務(wù)器對(duì)連接數(shù)嘲碱、高并發(fā)等做了限制金砍,因此用戶數(shù)加上去之后會(huì)出現(xiàn)大量錯(cuò)誤。此時(shí)可以在服務(wù)器端修改連接數(shù)限制麦锯,或者針對(duì)施壓機(jī)增加白名單恕稠。
jmeter對(duì)于error的默認(rèn)判斷標(biāo)準(zhǔn),并不符合實(shí)際某些場(chǎng)景扶欣,此時(shí)要么在腳本中增加一些后置處理鹅巍,要么根據(jù)壓測(cè)生成的文件,自行手動(dòng)處理料祠。
五骆捧、服務(wù)器下線
由于是生產(chǎn)環(huán)境機(jī)器,很多情況下有費(fèi)用產(chǎn)生髓绽,而壓測(cè)一般只是短期需求敛苇,所以壓測(cè)結(jié)束之后,把相關(guān)數(shù)據(jù)備份完畢顺呕,就可以進(jìn)行服務(wù)器下線操作,節(jié)省費(fèi)用。土豪隨意弛车。