近期做了一次論壇網(wǎng)站性能測試,記錄下來以便總結(jié)提高,歡迎大家交流分享,若有不妥之處還請指教;
需求分析
性能要求
1、服務(wù)在3000并發(fā)基礎(chǔ)上,關(guān)鍵服務(wù)響應(yīng)時間小于等于300ms
2、系統(tǒng)支持快速擴(kuò)容,支持更大的并發(fā)Session,例如并發(fā)Session從2000到4000,擴(kuò)容后關(guān)鍵頁面訪問、關(guān)鍵服務(wù)響應(yīng)時間增長幅度低于5%
性能指標(biāo)
經(jīng)過分析,我們認(rèn)為要求中的3000絕對并發(fā),跟jmeter中的并發(fā)數(shù)不同,要求中應(yīng)該是指的3000用戶同時操作,對應(yīng)到我們jmeter壓測過程中,說的是tps?達(dá)到3000;
用戶要求并發(fā) | 用戶要求響應(yīng)時間 | 預(yù)估線程數(shù) (jmeter并發(fā)數(shù)) |
3000并發(fā)--每秒3000請求 | 300ms--1秒請求3次 | ? 1000 |
所以測試時應(yīng)關(guān)注的指標(biāo)為:TPS? 3000時,服務(wù)響應(yīng)時間? 小于等于300ms
環(huán)境準(zhǔn)備
略
測試工具
apache-jmeter-5.1.1
測試過程
單接口
1、首先利用階梯壓測,找到并發(fā)數(shù)和TPS的拐點(diǎn);初步得到我們壓測時,應(yīng)該給多少并發(fā)數(shù);
? ? ? 階梯壓測后,我們決定并發(fā)數(shù)最大為 500
2、單接口場景下,分別給單接口100、200、250 、500并發(fā)數(shù);
? ? ? 如下所示,200加到250? 直到500,tps并沒有跟著上漲,但是響應(yīng)時間卻上漲很快;
? ? ? 所以得到最優(yōu)情況為:并發(fā)數(shù) 200,tps? 1023.5
并發(fā)數(shù) | TPS | 平均響應(yīng)時間 | 90%響應(yīng)時間 | 95%響應(yīng)時間 | 異常率(%) | 執(zhí)行時長(s) | CPU | 內(nèi)存 |
---|---|---|---|---|---|---|---|---|
100 | 893.6/s | 111 | 146 | 162 | 0 | 300 | 85.26% | 69.28% |
31.00% | 79.79% | |||||||
200 | 1023.5/s | 146 | 288 | 378 | 0 | 300 | 95.10% | 70.01% |
35.97% | 79.31% | |||||||
250 | 1043.1/s | 238 | 367 | 712 | 0 | 300 | 95.49% | 68.88% |
37.04% | 79.35% | |||||||
500 | 1062.2/s | 462 | 1225 | 1474 | 0 | 300 | 96.06% | 68.81% |
39.21% | 79.45% |
3、此時觀察cpu和內(nèi)存,cpu達(dá)到了90%以上,所以我們決定擴(kuò)容后再次測試;
4、對性能環(huán)境擴(kuò)容4倍后,我們再次用階梯壓測,得到最大并發(fā)數(shù)還是給到500;
5、把所有的接口,分別給100、200、500并發(fā),根據(jù)結(jié)果來分析最優(yōu)情況;
? ? ? 最優(yōu)情況:并發(fā)數(shù) 500,TPS 2313.8? ?
? ? ? 并計算出擴(kuò)容4倍后,提升率為126%,繼續(xù)擴(kuò)容應(yīng)該可以滿足性能要求
并發(fā)數(shù) | TPS | 平均響應(yīng)時間 | 90%響應(yīng)時間 | 95%響應(yīng)時間 | 異常率(%) | 執(zhí)行時長(s) | CPU | 內(nèi)存 |
---|---|---|---|---|---|---|---|---|
100 | 1124.9 | 87 | 101 | 127 | 0 | 300 | 26.11% | 34.70% |
34.65% | 75.74% | |||||||
22.43% | 47.03% | |||||||
39.48% | 91.49% | |||||||
200 | 1729.2 | 114 | 133 | 148 | 0 | 300 | 38.93% | 34.75% |
53.57% | 76.23% | |||||||
30.17% | 47.26% | |||||||
59.09% | 88.36% | |||||||
500 | 2313.8 | 213 | 239 | 1123 | 0 | 300 | 49.08% | 35.23% |
67.36% | 76.51% | |||||||
42.09% | 47.43% | |||||||
75.74% | 89.16% |
混合接口
? ? ? ? ?跟單接口測試方法一樣
? ?擴(kuò)容前得到最優(yōu)情況為:并發(fā)數(shù) 200,? tps 170? ? ? ? ?
? ?擴(kuò)容后得到最優(yōu)情況為:并發(fā)數(shù) 500,??tps 437.2
性能問題及優(yōu)化
1、執(zhí)行十幾秒后,TPS斷崖式下降,響應(yīng)時間增大,CPU使用率下降? ?----因?yàn)閿?shù)據(jù)庫只有只讀模式導(dǎo)致報錯,數(shù)據(jù)都堵塞在master;
2、nmc監(jiān)控,發(fā)現(xiàn)存在慢sql,----對相關(guān)慢sql進(jìn)行整改;
踩坑過程
? ? ? ? 在持續(xù)壓測15分鐘后,tps會迅速上升,錯誤率隨之迅速上升,剛開始以為是運(yùn)行一段時間之后,都走緩存,所以tps會有明顯的上升趨勢,后來排查發(fā)現(xiàn),15分鐘后,獲取的token過期了,導(dǎo)致后面的接口全部沒有正常調(diào)用;文章來源:http://www.zghlxwxcb.cn/news/detail-508934.html
? ? ? ? 檢查斷言,發(fā)現(xiàn)斷言200是不行的,因?yàn)闆]有正常調(diào)用的接口也會返回200,改了斷言之后,重新壓測,tps不會再陡增。文章來源地址http://www.zghlxwxcb.cn/news/detail-508934.html
到了這里,關(guān)于性能測試(記一次論壇網(wǎng)站性能測試)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!