問題背景:
今年公司項目進行Saas化轉型,在中間遇到很多問題,其中之一就是 Saas化后多租戶的性能 和 並發問題。公司讓我來調研和重現問題,通過調研總結了一些經驗教訓,分享給大家。
環境:
- LoadRunner 11.0 (支持60000+並發)
- LoadRunner 12.0 (適用版本 50並發,新版本比較好用,錄制腳本不錯,漢化很好)
- WindowServer 2012 R2 (在服務器上搭建測試環境)
- IIS
- Vmware虛擬機(虛擬機安裝了 LoadRunner 12,來錄制腳本)
- PostMan接口測試工具(保證測試前的接口調用是正常的)
下載地址:百度雲 https://pan.baidu.com/s/1f3uatZmofUNyifxD9AvRIA
關於安裝:
- 安裝 windows Server 2012。
- 安裝 LoadRunner 11.0,不要安裝漢化包,只在上面做並發場景測試。
- 安裝Vmawre,安裝系統,安裝Loadrunner 12,做腳本錄制。也可以錄制腳本,就是覺得不好用,所以用的12做錄制。
調研:
- LoadRunner 如何使用 ??
- LoadRunner 名詞解釋??
- LoadRunner 代碼錄制??
- LoadRunner API編碼??
- LoadRunner 場景壓力測試??
- LoadRunner 結果分析??
- 踩過的坑??
安裝教程:
https://blog.csdn.net/drf91519/article/details/78768665
https://www.cnblogs.com/xiaoqingSister/p/5906642.html
名詞解釋:
https://www.cnblogs.com/chengchengla1990/p/5799053.html
https://www.cnblogs.com/pearlpanda/p/4057046.html
代碼錄制:
https://litboy.kuaizhan.com/17/62/p4103840010edaf
參數化:
https://www.cnblogs.com/wxh04/p/8986450.html
https://blog.csdn.net/milan_ebk/article/details/5173978
集合點:
https://blog.csdn.net/huangjin0507/article/details/52161299
API文檔:
https://wenku.baidu.com/view/4ce602dd6f1aff00bed51eff.html
結果分析:
** 要多做測試方案,結合自己的場景多分析問題,下面就是在項目中分析的問題(表現,數據庫數據,日志等)
表現:
100個數據庫,300左右並發量。CPU使用率正常,數據庫讀寫正常。
猜測:
數據庫死鎖:這點目前來看是不成立的,因為1000個虛擬用戶訪問的頻率是差不多的,1個數據庫沒有死鎖,分攤到100個數據庫應該是可以正常處理的
內存溢出(緩存、可以使用內存工具查看那些內存高)
最后項目的問題是:
深入研究EF Core AddDbContext 引起的內存泄露的原因
https://www.colabug.com/3076902.html
目前已經升級框架到最新asp.net core。問題得到很好的修復。
踩過的坑:
- 谷歌瀏覽器錄制代碼打不開,可以使用fang~qiang工具。估計是和瀏覽器需要調用谷歌api有關具體不詳。
- 可以刪除錄制代碼里面不需要的代碼。自己把握。
- 綜合理解其概念過后很多可以自己寫代碼。具體可以參見API。
- 保持測試環境是比較困難的,因為每一次測試都得還原最初始的環境,因此需要些一些腳本或者工具來自動還原數據庫等。
- 測試比較花時間,但是對項目實際的價值比較高。
- 要經常總結並記錄測試結果,調整測試方案。
- 中途還用過內存檢測工具,並沒有發現什么問題。
