電商網站性能壓測項目總結分享

1. 項目背景及架構介紹

1.1 背景介紹

被測項目是一個 B2B 類的工業品商城網站,主要分爲中文版和國際版兩塊。網站首頁截圖如下:

enter image description here

對該系統進行性能測試主要目的有兩個:

  1. 驗證系統的承壓能力,估測系統可承受的訪問壓力;
  2. 查找定位有性能問題的功能模塊或接口;

1.2 架構圖

我們對一個系統進行壓測前,需要了解清楚系統架構,這樣才能知道後續壓測需要關注監控哪些服務器指標。本被測電商系統的架構圖如下:

enter image description here

通過分析架構圖,可以知道我們在做性能時,需要重點監控如下幾類服務器,以幫助我們定位服務器性能瓶頸所在。

  • SLB 服務器(重點關注網絡流量、CPU)
  • Nginx 服務器(重點關注網絡流量、CPU)
  • Tomcat 服務器(重點關注網絡流量、CPU、內存)
  • MySQL 服務器(重點關注網絡流量、磁盤 IO、CPU)
  • MQ 服務器(重點關注網絡流量、CPU)
  • Redis 服務器(重點關注內存)

注:因爲要監控的服務器比較多,我們不可能每臺服務器都去通過一些命令(如 top、free、iostat、netstat 等)去檢查服務器資源消耗情況,其實現在都有一些很好的可視化運維繫統(如 OpenFalcon、Zabbix 等),公司運維人員都會有一些類似監控系統,只需在要監控的服務器上部署一下 Agent 即可把服務器監控起來,而且我們可以配置一些告警策略,比如當 CPU 使用率高於 90% 時告警發送郵件;這樣我們在壓測過程中不用實時盯着各個服務器的各項指標,當接收到告警後,我們再去翻看歷史監控數據即可。

2. 環境準備

性能環境準備主要包括兩塊:

  1. 被測系統環境;
  2. 壓力機環境。

2.1 被測系統環境

一般做性能要有獨立的測試環境。條件允許的話,服務器各項配置要儘量與生產保持一致或與生產成比例配置,這樣方便我們通過測試結果預估線上環境承壓能力。當然如果你做性能測試的目標只是爲了找程序上存在的性能問題,對環境的配置要求會小很多,一般的測試環境就可以拿來進行壓測,但要選好測試時間並做好數據隔離,避免對功能測試造成影響。

我這次測試電商系統因爲還未正式上線,可以直接拿線上生產環境進行壓測,這樣就沒有單獨再搭建獨立的性能測試環境,但項目上線後,性能壓測環境由線上環境改爲了預發佈環境。

注:性能壓測環境一定要配置好監控,並做好數據的備份隔離;我這裏選用的監控平臺爲 OpenFalcon。

2.2 壓力機環境

這個環境就是壓測工具的運行環境,用來生成測試負載。測試工具我選用的是開源壓測工具 Jmeter,並準備了與被測系統環境同網段的兩臺 VM 作爲壓力機。

特別注意的是,我們進行壓測時也要通過 JConsole 等工具監控 Jmeter 的 JVM 消耗情況,以防壓力機達到性能瓶頸,影響性能測試結果的準確。

注:壓測工具有很多,選用時根據系統特點和需求來選用即可,比如 LR、Jmeter、Galting、AB 等。

3. 性能方案分享

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章