性能測試中的場景設計和測試執行

假設一個內部系統要求響應時間在 3s 以內,支持最大用戶數為4萬。根據二八原則,80%用戶在20%時間使用系統(4w80%)/(24h20%)≈1.9點擊/秒。并發數=TPS(運行時間+思考時間)=1.9(3+0.5+0.3+3+0.5+0.3+0.5+3)=21。

注意:二八原則計算的結果并非是并發數,而是系統要達到的處理能力(吞吐量),初學者容易被誤導,拿著這個數據就去設置并發數,這是錯誤的哦。如果你的系統性能要求更高,也可以選擇一九原則或更嚴格的算法,二八原則比較通用,一般系統性能比較接近這個算法而已,大家應該活用。

基于以上,如果我們通過測試得到的最大吞吐量大于計算出來的吞吐量(TPS≈1.9),且各項性能指標均達標,那么系統就是安全的。如果用戶發帖遵循正態分布,那么并發請求數峰值還肯定會大于上述估算的吞吐量(并發數大于吞吐量)

01場景設計

場景編號:001 - 基準測試

目的:驗證測試環境、驗證腳本,得到系統的性能基準,為后續測試提供參考。

場景編號:002 - 配置測試

目的:優化配置,測試當前軟、硬件配置是否能夠滿足性能指標。

場景編號:003 - 負載測試

目的:分析性能變化趨勢,找出性能瓶頸與風險,對系統進行定容定量。

場景編號:004 - 穩定性測試

目的:長時間(>8小時)運行大量負載,確定系統軟硬件環境是否運行穩定。

02場景實現

1、單線程組實現測試場景

假設業務比例為 “查看詳情(8):登錄(6):新建任務(4):(配置任務)2:(刪除任務)1”。差不多每3個登錄會有4個查看任務,新建2個任務,配置1個任務;每6個登錄,刪除1個任務。

我們使用 If邏輯控制器 + ${__counter(arg1, arg2)}函數來實現。

  • 新建任務的If控制器條件:登錄(3)/新建(2)
    ${__counter(true,i)}%2==1||${__counter(true,i)}%3==0
  • 配置任務的If控制器條件:登錄(3)/配置(1)
    ${__counter(true,i)}%3==0
  • 刪除任務的If控制器條件:登錄(6)/刪除(1)
    ${__counter(true,i)}%6==0
  • 查看任務:因為配置和刪除操作包含查看的業務,所以單獨的登錄/查看比為6:(8-2-1),即6:5。
    ${__counter(true,i)}%5!=0||${__counter(true,i)}%6==0

2、多線程組實現測試場景

多線程組的場景設計需要注意的是業務關聯關系。比如查看任務可以不需要登錄的;新建、配置、刪除任務都需要登錄且并發數的和大于登錄,說明有些場景是登錄后執行了多業務的;查看詳情的并發數小于登錄,所以有部分用戶可能是登陸后只查看了詳情。

按照 “查看詳情(8):登錄(6):新建任務(4):(配置任務)2:(刪除任務)1” 的比例,以及用戶實際使用場景來算,得到如下場景:

  • 登錄(2)-新建任務(2)
  • 登錄(2)-新建任務(2)-配置任務(2)-查看詳情(2)
  • 登錄(1)-查看詳情(1)-刪除任務(1)
  • 登錄(1)-查看詳情(1)
  • 查看詳情(4)

兩種腳本實現方式的對比:

03測試執行

場景編號:001 - 基準測試

基準測試采用單用戶、單業務場景的執行方式。測試時間盡可能長,盡量執行多次(通常建議3次以上),取相對穩定的結果,目的是統計響應時間的取樣更多,測試結果越準確。對于發現的異常,如果不熟悉就請開發團隊告訴你有哪些作業任務,這些作業任務的頻度是否適中。

基準測試_聚合報告

基準測試_ResponseTime

基準測試_TPS

結論:

滿足性能需求3s以內,事務正確率100%,且CPU、內存、磁盤表現正常(局域網不考慮網絡影響)。測試環境檢查通過,腳本檢查通過,可以考慮對系統進一步的測試。

場景編號:002 - 配置測試

先確定配置測試的目標:

  • JVM配置
  • Tomcat線程池配置
  • 數據庫連接池配置
  • 數據庫的一些配置

配置測試場景一般為混合場景(多個業務同時執行)

  • JVM Heap大小及不同代的大小指定?Heap回收算法的選擇?(P316)
  • Tomcat線程數配置?
  • 數據庫緩存、臨時表空間,大表水平切分,主從結構、讀寫分離、主從備份、主主備份等?

配置測試_聚合報告

配置測試_ResponseTime

配置測試_TPS

結論:

隨著并發數的增加,響應時間也逐漸增加,但仍然滿足3s以內的性能指標;事務正確率100%;查看詳情、登錄、新建任務、配置任務、刪除任務各業務之比接近6:8:4:2:1;TPS未出現明顯拐點;CPU、內存、磁盤均正常。性能表現能夠滿足需求,系統性能瓶頸風險在CPU。

場景編號:003 - 負載測試

負載測試在滿足系統性能指標的基礎上進行測試,尋找性能的拐點。負載測試分為單場景與混合場景。

  • 單場景有利于分析性能問題,因為排除了其他業務干擾;
  • 混合場景更貼近用戶實際使用習慣,是一個綜合的性能評估。

建議先做單場景測試,再做混合場景測試

我們一般采用二分法,如總的線程數遞增為21/42/84,當發現線程增大后性能降低,再對該區間進行二分嘗試,最后對拐點附近精細嘗試得到最大吞吐量

負載測試_聚合報告

負載測試_ResponseTime

負載測試_TPS

負載測試_CPU

結論:

執行過程中,CPU首先出現性能瓶頸,利用率接近100%。響應時間開始大于3s,TPS降低,出現失敗的事務。此時的內存、磁盤、網絡均表現正常。此時應優先解決CPU的瓶頸問題,再反復進行負載測試,直到在沒有硬件瓶頸的條件下找到系統的性能拐點。

場景編號:004 - 穩定性測試

穩定性測試在正常性能閥值下盡量加大負載。什么是閥值呢?

比如響應時間要求3s以內,3秒就是閥值;比如CPU利用率70%以下,70%就是閥值。假設滿足性能要求的負載是B,那么穩定性測試時負載一般是1.5B~2B。

在此案例中我們滿足性能需求的并發量是21,那么在做穩定性測試時,并發量應該是1.521~221即32~42之間。運行時間原則上越長越好,慣例要求不低于8小時。有些隱藏較深的諸如內存溢出的問題是需要長時間運行才能反映出來的。如果各項性能指標都在閥值內,且性能表現平穩,則可以認為通過穩定性測試。

除了分析響應時間、TPS和服務器硬件性能外,我們也要關注JVM內存回收情況,MySQL有無慢查詢等。

原文鏈接:百度安全驗證

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/38719.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/38719.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/38719.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Flutter循序漸進==>數據結構(列表、映射和集合)和錯誤處理

導言 填鴨似的教育確實不行,我高中時學過集合,不知道有什么用,毫無興趣,等到我學了一門編程語言后,才發現集合真的很有用;可以去重,可以看你有我沒有的,可以看我有你沒有的&#xf…

毫米波雷達深度學習技術-1.7訓練一個神經網絡

1.7 訓練一個神經網絡 對于訓練神經網絡,有兩個步驟,即前向傳遞和誤差反向傳播。 1.7.1 前向傳播和反向傳播 在前向傳遞中,輸入被饋送到模型并與權重向量相乘,并為每一層添加偏差以計算模型的輸出。密集層或全連接層第l層的輸入、…

SQL面試題練習 —— 查詢前2大和前2小用戶并有序拼接

目錄 1 題目2 建表語句3 題解 1 題目 有用戶賬戶表,包含年份,用戶id和值,請按照年份分組,取出值前兩小和前兩大對應的用戶id,需要保持值最小和最大的用戶id排首位。 樣例數據 ------------------------- | year | user_id | v…

網絡基礎-RIP協議

RIP(Routing Information Protocol)是一個基于距離矢量的動態路由協議,常用于小型到中型網絡。RIP是較早的路由協議之一,具有簡單易用的特點。以下是關于RIP協議的詳細介紹: RIP的主要特點 ①使用跳數(ho…

非標設備行業的數智化項目管理

近年來,中國制造快速發展,企業迫切需要加快轉型升級。與傳統制造業相比,高端制造業具有明顯的優勢:高技術、高附加值、低污染、低排放、競爭優勢強。一方面,企業對于生產效率和自動化水平的要求不斷提高,期…

開發個人OpenUI--1 項目介紹

開發個人OpenUI--1 項目介紹 開發個人OpenUI--1 項目介紹知識點大綱文章目錄項目地址 開發個人OpenUI–1 項目介紹 本文將以一個使用Ollama部署的ChatGPT為背景,主要還是介紹和學習使用 go-zero 框架,開發個人OpenUI的服務器后端,使用Docker…

武漢星起航:成功掛牌上股交,領航亞馬遜跨境電商,共創未來輝煌

在全球電商的競爭格局中,亞馬遜憑借其卓越的服務、豐富的商品種類和高效的物流體系,始終穩坐全球電商市場的頭把交椅。而在這股不可阻擋的電商浪潮中,武漢星起航電子商務有限公司憑借其前瞻性的戰略布局和強大的運營能力,成功在20…

名企面試必問30題(十二)——簡單介紹一下你的家庭情況

1.思路 對于面試官來說,他提出這個問題,只是為了深挖您的性格、穩定性、行事風格,包括未來定居規劃、生育規劃等基礎信息,這是正常情況。您不要過多圍繞其他家庭成員來講,否則面試官無法獲取他想要的,您也難…

【單片機畢業設計選題24040】-基于STM32的藍牙防丟器設計

系統功能: 系統上電后顯示“歡迎使用藍牙防丟系統請稍后”兩秒鐘顯示正常界面,如果藍牙正常連接OLED顯示Connected, 藍牙未連接則顯示DisConnected同時蜂鳴器報警 藍牙正常連接后在APP上每隔三秒顯示一個Connected 系統功能框圖: 主要功能模塊原理圖: 電源時鐘…

大數據之Zookeeper部署

文章目錄 集群規劃環境準備集群部署參考資料 集群規劃 確定使用Hadoop101、hadoop102和hadoop103三臺服務器來構建Zookeeper集群。 hadoop101hadoop102hadoop103zookeeperzookeeperzookeeper 環境準備 安裝zookeeper前需要確保下面的環境配置成功,具體可以參考大…

AI智能剪輯發展到哪種地步?來看看云微客就知道了!

不是短視頻團隊招不起,而是矩陣賬號更有性價比。企業做短視頻有反思過為什么干不過同行嗎?我們來看看大佬是怎么做的。云微客AI智能剪輯系統用幾百個賬號做矩陣布局,系統每天自動進行批量剪視頻、寫文案、一鍵自動化發布視頻,一個…

[漏洞復現] MetInfo5.0.4文件包含漏洞

[漏洞復現] MetInfo5.0.4文件包含漏洞 MetInfo5.0.4 漏洞代碼審計 漏洞出現在about/index.php中,因為利用了動態地址,所以存在漏洞。 漏洞檢查語句(!192.168.109.100是我的服務器ip,需要換成自己的)&…

華為倉頡語言體驗:一個簡單的socket服務端實現

前言 由于倉頡目前是內測狀態, 不能展示倉頡的詳細信息,但是華為倉頡官網的公共文檔的內容是可以公開的。 我相信有不少喜歡編程的朋友都申請了內測,但是一些編程初學者應該和我一樣,處于摸索階段。所以,我這里把我測…

排序題目:多數元素 II

文章目錄 題目標題和出處難度題目描述要求示例數據范圍進階 前言解法一思路和算法代碼復雜度分析 解法二思路和算法代碼復雜度分析 解法三思路和算法代碼復雜度分析 題目 標題和出處 標題:多數元素 II 出處:229. 多數元素 II 難度 3 級 題目描述 …

css高度0到高度auto,過渡的設置

1.css從高度0到高度auto,過渡設置 方法(vue代碼) 你可以通過設置transform: scale(0);到 transform: scale(1); 來實現,具體代碼 你也可以通過設置transform: scaleY(0);到 transform: scaleY(1); 這兩種展示的效果不一樣,你可以看看你喜歡那種 // css代碼// 原來的css類 .s…

港口危險貨物安全管理人員考試題庫(含答案)

一、單選題 1.化學品安全標簽內容中警示詞有( )種分別進行危害程度的警示。 A、3 B、4 C、5 參考答案:A 2.運輸放射性物品,應當使用( )的放射性物品運輸包裝容器(以下簡稱運輸容器)。 A、專業 B、專用 C、統一 D、定制 參考答案:B 3.庫區儀表及計算機監控管理系…

中電金信:金Gien樂道 | 6月熱門新聞盤點 回顧這一月的焦點事件

“以檢之力 e企守護”——上海市檢一分院與中電金信開展聯學聯建 6月24日,上海市人民檢察院第一分院與中電金信數字科技集團股份有限公司聯合開展“以檢之力 e企守護”聯學聯建活動。雙方共同參觀了全國檢察機關證券期貨犯罪辦案基地和重大職務犯罪案件辦理&#xf…

HTML5與3D打印:探索網頁內容的物理化可能

隨著科技的飛速發展,互聯網與物理世界的交匯點日益增多。HTML5作為當前網頁開發的主流標準,不僅推動了網頁內容的豐富性和互動性,還在與3D打印技術的結合中,展現出了將網頁內容物理化的巨大潛力。本文將探討HTML5與3D打印的結合點…

C++ 中的數據類型

C規定在創建一個變量或者常量時,必須要指定出相應的數據類型,否則無法給變量分配內存. 1 整型 作用:整型變量表示的是整數類型的數據 C中能夠表示整型的類型有以下幾種方式,區別在于所占內存空間不同: 數據類型占用…

python(6)numpy的使用詳細講解

在numpy中,最基本的數據結構是數組,因此我們首先需要了解如何創建一個數組。numpy提供了多種數組創建方法,包括從列表或元組創建、從文件中讀取數據、使用特定函數創建等。下面是一些常用的創建方法: 一、創建數組 1. 從列表或元…