性能測試—性能環境與數據
性能環境,也是困擾性能測試人員很重要的一個問題。如何模擬線上真實的環境?如何在測試環境進行的性能測試結果,能準確的反應到生產線上去?
先聊下我們的做法。
首先確認線上的網絡拓撲圖。比如:
左邊是線上環境,線上一般是分布式集群部署。比如用戶訪問服務器A,而服務器A需要依賴到服務器B和C提供的服務,而服務器C與DB存儲打交道。那么在性 能測試環境,為了模擬用戶的行為,需要搭建服務器A,B,C和DB各一臺。通過對單臺服務器A的壓測結果TPS,再線性乘以機器數量,完成線上服務器A集 群的TPS的評估。
這樣做,簡單的完成了線上和線下的結果推算。但是這樣做,有一個前提:就是保證線上和性能測試環境的機器配置是一樣的。機器的配置分為2個部分:硬件和軟件。
硬件方面,比如機器是4核4G的xen虛擬機,千兆網卡,SATA磁盤。
上面說的是應用層面,性能測試還有很重要的一步,就是性能測試數據的準備。
性能測試數據庫的環境也與應用層一樣,保持和線上一樣的硬件與軟件配置。這里有個問題就是:生產線上一臺數據庫,對應多臺應用。而在性能測試環境中,被我們映射成1:1的關系后,很難找到數據庫層的性能瓶頸,因為在壓測過程中,應用層會比數據層更快到達性能瓶頸。
接下來,簡單描述下性能測試數據的準備。性能測試數據的準備也分為2個部分。1是業務數據,2是基礎數據。
什么是業務數據?業務數據就是性能測試要模擬的用戶擁有的數據。比如賣家A,有100個商品。100就是業務數據。基礎數據就是商品所在表的總數據量。比如100W。
性能測試的數據,不光要關注業務,更要關注數據庫表的量級,因為100條數據,和100W條數據,性能測試出來完全是兩個結果。
為了數據的準確性,性能測試的數據表,也要滿足生產線上表的量級。
滿足了這些條件,性能環境才能基本真實模擬生產線的環境,測試出來的結果才有推算上線后結果的可能。
后記:
每個公司的業務不同,系統架構也不同,所以性能測試環境方面肯定有很大的差異。我只是簡單的寫了我所在公司的性能環境的一些知識,分享給大家,供大家一個參考,希望你能從這里獲得有用的東西。關于性能測試環境,我的一些觀點:
1. 如果允許生產線做性能測試,就盡量做生產線性能測試。同樣的環境,性能測試的結果才有意義,性能測試的價值也最大體現。
2. 測試環境的配置可以與線上一樣,可以做下N:1的映射。結果線性乘以機器數,可以評估線上集群的負載。
3. 真沒條件,線上線下環境差異很大。就盡量找一些代碼級別的性能瓶頸。優化后再上線,線下的結果就不用去推算線上,很不科學
posted on 2014-05-04 12:56 順其自然EVO 閱讀(520) 評論(0) 編輯 收藏 所屬分類: 性能測試 、web 前端性能測試