如何合理規劃性能測試拓撲?

 假設通過性能測試需求分析,我們需要創建一個性能測試場景,併發500個web虛擬用戶,這時我們需要考慮:
  1)選用什麼樣軟硬件配置的的機器作爲測試機?
  2)500個併發用戶需要多少臺測試機纔夠用?
  在性能測試執行之前,一定要把上面的問題搞清楚,主要是爲了避免將來性能測試執行時瓶頸出現在客戶端,客戶端承載了太多的壓力,而沒有真正的提交到服務器上去。這種情況下,我們會看到客戶端CPU利用率居高不下,響應速度十分緩慢,甚至出現宕機的情形。
  實際上,針對特定的性能測試需求,建立多大規模的性能測試機羣纔算合理,與多個因素有關,包括:測試機的軟硬件配置、測試機的數量、腳本的複雜程度、網絡的情況等。
  客戶端CPU估算
  還是以web虛擬用戶爲例,如果選擇windows XP 1 CPU,1GB內存標準配置作爲測試機,那麼每50虛擬用戶佔用CPU約爲2.2%。因此,在理想狀態下,總共在本機可最大併發的虛擬用戶爲:
  Total Vusers=100/2.2*50=2272(個虛擬用戶)
  結合實際情況考慮,操作系統本身,LR等後臺進程的運行也要佔用20%左右的CPU資源,再加上80%的瓶頸係數,實際情況下,在保證不出現CPU瓶頸的前提下,windows XP 1CPU 1GB內存標準配置的最大CPU瓶頸虛擬用戶爲:
  Total Vusers=100/2.2*50*80%*80%=1454(個虛擬用戶)
  客戶端網絡瓶頸估算
  網絡瓶頸是一個重要但又經常被忽視的瓶頸因素。在負載測試執行時,必然會引起大量的網絡流量,那麼在當前的網絡情況下,能否順利的運載這些數據到達服務器呢?這需要在性能測試開始之前,進行一個網絡瓶頸評估。
  假設,當前的網絡環境爲100MB局域網,實際上100MB的計算單位爲bit,轉化成我們常用的Byte,應該是100/8=12.5M Byte。
  一般,網絡的瓶頸安全係數爲80%,那麼實際上LR可用的瓶頸寬帶爲:
  Available bandwidth = 12.5 * 80% =10M Bytes
  當前局域網內本機可併發的最大用戶數爲 LR可用寬帶(10MB)/ 單個用戶寬帶(單個虛擬用戶的佔用寬帶可以藉助抓包工具分析)
  客戶端內存瓶頸估算
  在windows XP標準配置環境下,每50web虛擬用戶以進程模式運行所需內存爲4.6MB,以線程模式運行所需內存爲0.82MB。因此,理想情況下,1GB內存進程運行最大併發爲1000/4.6*50=10869,以線程模式最大併發爲1000/0.82*50=60975。
  在實際情況下,還要考慮其他使用內存的因素,如操作系統和相關後臺進程,虛擬內存觸發條件,VU腳本本身應用創建buffer所需內存。
  由於LR運行在操作系統上,操作系統內存也隨着壓力的發起而增大,當內存增大到一定程度的時候,虛擬內存就會被創建,這時就會進一步提高CPU的佔用率和IO吞吐量,實際上形成客戶端的瓶頸。因此,做如下假設:
  1、LR運行時,操作系統佔用內存25%。
  2、在物理內存使用率到達85%時,將會創建虛擬內存(可以查看windows和linux相關swap參數設置)。
  3、虛擬用戶主要是處理和發送數據,一個腳本所使用的內存可以用它發送出去的網絡數據大小來替代。
  總共虛擬用戶可用內存 Total available Memory=1000*(100-25%)*85%=638MB
  每個虛擬用戶佔用內存 Vuser Memory=lr Vuser 執行內存+ Vuser腳本使用內存
  Vuser腳本使用內存可以使用網絡流量來估算,比如抓包獲取的流量爲115KB,那麼腳本爲執行此操作,至少要在內存上開闢出115KB的數據buffer。
  因爲,單個虛擬用戶運行所需內存爲:Vuser Memory=0.82+115=116KB
  而在1G內存下,能夠支持最大瓶頸併發用戶數爲:
  Total Vusers=Total available Memory/Vuser Memory=638MB/116KB=5500個。
  總評估
  通過以上計算,我們能清楚的看到,在windows XP 測試機標準配置下,
  1、CPU瓶頸最大虛擬用戶併發數爲1454
  2、網路瓶頸最大虛擬用戶併發數爲416
  3、內存瓶頸最大虛擬用戶併發數爲5500
  根據瓶頸取短原則,實際上當前測試的瓶頸虛擬用戶數爲416個。
  同時,我們還可以從評估分析種得到以下結論:
  1、如果想做到500併發,應對當前網絡環境進行升級。
  2、web腳本不宜過長,否則數據buffer遲遲得不到釋放,會導致本虛擬用戶的內存使用過高,可能引起本機內存瓶頸。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章