性能測(cè)試腳本執(zhí)行經(jīng)驗(yàn)總結(jié)
1. 壓力要逐漸上去,因?yàn)橄到y(tǒng)在各個(gè)壓力梯度的表現(xiàn)是不同的。壓測(cè)時(shí),不能一上來(lái)就給系統(tǒng)很高的用戶數(shù)、很高的并發(fā)數(shù),以至于系統(tǒng)直接到了塌陷區(qū),這樣就沒法監(jiān)控到系統(tǒng)在輕負(fù)載區(qū)和重負(fù)載區(qū)的表現(xiàn);當(dāng)然,也不能一直在低的用戶數(shù)和低的并發(fā),這樣只能測(cè)到系統(tǒng)在輕負(fù)載區(qū)和重負(fù)載區(qū)的表現(xiàn)。因此,正確的做法是,多個(gè)不同壓力設(shè)置的腳本(線程數(shù)、并發(fā)用戶數(shù))分階段去壓測(cè)(例如1s內(nèi)起100用戶數(shù)循環(huán)10000次100并發(fā);2s內(nèi)起200用戶數(shù)循環(huán)10000次150并發(fā);2s內(nèi)起200用戶數(shù)循環(huán)10000次200并發(fā);3s內(nèi)起300用戶數(shù)循環(huán)10000次300并發(fā)…直到8s起800個(gè)用戶循環(huán)10000次800并發(fā)等),或者在同一個(gè)腳本文件中,構(gòu)造不同用戶數(shù)和并發(fā)數(shù)的多個(gè)階段的壓測(cè)腳本。
2. 壓測(cè)時(shí)間要長(zhǎng)(一般通過(guò)循環(huán)次數(shù)去控制)。例如循環(huán)10000次,壓測(cè)時(shí)間短時(shí)(循環(huán)次數(shù)低),系統(tǒng)往往也不會(huì)暴露問(wèn)題。
3. 壓測(cè)時(shí)和壓測(cè)結(jié)束后,監(jiān)控系統(tǒng)的表現(xiàn)。方式包括查看Jmeter報(bào)告、系統(tǒng)監(jiān)控圖表、MySql監(jiān)控和接口日志等。
4. 要增加響應(yīng)斷言,對(duì)業(yè)務(wù)斷言確保業(yè)務(wù)準(zhǔn)確。
5. 搭建一套仿真的壓測(cè)環(huán)境(配置有縮放公司)。有條件的話,從生產(chǎn)環(huán)境配置分布式機(jī)器,從指定ip壓測(cè),但該機(jī)器不作為服務(wù)器使用,配置差異不能和生產(chǎn)環(huán)境服務(wù)器差異太大。