常見的Jmeter壓測問題

🍅 點擊文末小卡片,免費獲取軟件測試全套資料,資料在手,漲薪更快

根據在之前的壓測過程碰到的問題,今天稍微總結總結,以后方便自己查找。

一、單臺Mac進行壓測時候,壓測客戶端Jmeter啟動超過2000個線程,Jmeter報OOM錯誤,如何解決?

解答:單臺Mac配置內存為8G,可用內存最大為3.5G左右,啟動一個線程將近需要1M內存,2000個線程,需要大概2G左右的內存;然后啟動Jmeter,本身需要將近400M的內存,接著在運行過程中,Jmeter又使用了Respoonse Time、TPS、Thread等等的計數器也會占用額外內存;最后,Jmeter運行不到2分鐘,導致Jmeter閃退,然后Mac OS重啟,原因就是系統出現了Out Of Memory的錯誤。

建議:單臺壓測機器,啟動線程不超過1000個,推薦500個左右,這樣客戶端性能比較好;如果要壓測超過1000個線程,建議分成2臺Mac機器進行壓測,超過2000個,分成3臺Mac機器壓測,以此類推。

二、使用斷言,是否特別消耗系統資源?

解答:使用Response Assertion 和Json Assertion這兩種斷言方式,不是太占用系統CPU資源;但是如果使用正則表達式進行斷言,就會對系統的CPU有一定的消耗。這個好像使用SQL語句一樣,使用Like進行查找結果,是模糊匹配,所以需要額外資源進行計算;如果使用x=y的條件,查詢速度就會快很多。

三、當壓測線程500左右,沒有使用集合點,TPS一直無法上到200以上,并且Error%率很低,不超過1%的錯誤率?

解答:Jmeter在腳本中,使用集合點-synchronizing point,計算TPS的算法跟腳本中沒有使用集合點的TPS算法有區別;所以,當腳本中使用集合點,那么被集合點壓測的接口TPS就會比沒有被集合點壓測接口的TPS高;所以,這個是設置的問題,不是服務器或者應用的問題。

四、頁面性能需要壓測嗎?場景:多人反復登陸/退出/搶紅包/多人提問/多人彈幕......

解答:其實頁面的請求也是通過前端接口傳遞到后端接口,然后通過后端的接口拿到需要的數據,最后傳給前端,讓數據在前端頁面展示;如果后端的接口響應慢,就必然會導致前端展示數據的速度慢;如果后端的響應速度快,前端的展示數據的速度仍然很慢,那么就跟客戶端的機器CPU/內存/瀏覽器等配置相關,需要單獨分析,不能一概而論。

建議:這個問題,一般都是前端的開發工程師提出來的,其實,前端的邏輯相對簡單,主要是數據展示功能,數據的加工工程,都是放在后端來完成的;正常情況下,如果后端的接口響應很多,前端的接口響應速度應該不會慢。頁面的展示功能,其實可以通過“分頁加載”、“延遲加載”、“查詢緩存而不是數據庫獲取數據”等等手段,都可以提高頁面的響應速度,我就不班門弄斧了。

五、當使用Non-GUI模式運行Jmeter時候,TPS可以達到500-600左右,這個是啥原因?

解答:當壓測客戶端,使用命令行模式運行腳本,不是采用GUI模式運行腳本;如果GUI模式壓測的結果是300TPS左右,當切換到命令行模式后,壓測的結果是600TPS左右;這個一般是服務器的配置不一樣、服務器的訪問量不一樣等等原因。正常來說,使用命令行運行腳本,壓測客戶端使用自己的資源會更少,但是,不會影響TPS的指標,因為,你壓測的是服務器,不是你機器本身,跟客戶端的資源沒有半點關系。

六、并發線程數和并發用戶數,是同一概念嗎?

解答:對于loadrunner和jmeter之類常規性能測試工具來說,答案是肯定的;大家可以設置線程數100,循環1次,最后,總的請求數一定是:100。但是對于gatling比較特殊,用的是協程,比線程更小的單位,所以,并發線程數和并發用戶數不能直接畫等號。

七、TPS和QPS的區別是什么?

解答:TPS是每秒鐘處理完的事務次數,一般TPS是對整個系統來講的。一個應用系統1s能完成多少事務處理,一個事務在分布式處理中,可能會對應多個請求。每秒鐘處理完請求的次數;注意這里是處理完。具體是指發出請求到服務器處理完成功返回結果。

對于衡量單個接口服務的處理能力,用QPS比較多。

最后感謝每一個認真閱讀我文章的人,禮尚往來總是要有的,雖然不是什么很值錢的東西,如果你用得到的話可以直接拿走:

這些資料,對于做【軟件測試】的朋友來說應該是最全面最完整的備戰倉庫,這個倉庫也陪伴我走過了最艱難的路程,希望也能幫助到你!凡事要趁早,特別是技術行業,一定要提升技術功底。

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

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

相關文章

第二十三天:求逆序對

每日一道C題&#xff1a; 問題&#xff1a;給定一個序列a1,a2,…,an&#xff0c;如果存在i<j并且ai>aj&#xff0c;那么我們稱之為逆序對&#xff0c;求逆序對的數目。 要求&#xff1a;輸入第一行為n,表示序列長度&#xff0c;接下來的n行&#xff0c;第i1行表示序列中的…

Java—CompletableFuture 詳解

參考&#xff1a; CompletableFuture原理與實踐-外賣商家端API的異步化 - 美團技術團隊 CompletableFuture 詳解 | JavaGuide 1.CompletableFuture介紹 CompletableFuture是由Java 8引入的&#xff0c;在Java8之前我們一般通過Future實現異步。 Future用于表示異步計算的結…

大模型部署基礎設施搭建 - 向量數據庫milvus

一、docker方式安裝參考官網&#xff1a;https://milvus.io/docs/zh/install_standalone-docker.md#Install-Milvus-in-Docker1.1 安裝 curl -sfL https://raw.githubusercontent.com/milvus-io/milvus/master/scripts/standalone_embed.sh -o standalone_embed.shbash standal…

(25.08)Ubuntu20.04復現KISS-ICP

主頁&#xff1a;https://github.com/PRBonn/kiss-icp?tabreadme-ov-file 倉庫&#xff1a;https://github.com/PRBonn/kiss-icp.git 非 ROS 使用流程 1. 克隆倉庫 git clone https://github.com/PRBonn/kiss-icp.git cd kiss-icp 2. 使用 micromamba 創建 Python 虛擬環…

linux 軟硬鏈接詳解

一、核心區別總覽特性硬鏈接&#xff08;Hard Link&#xff09;軟鏈接&#xff08;Symbolic Link&#xff09;本質直接指向文件的 inode&#xff08;數據塊的入口地址&#xff09;指向文件的 路徑名&#xff08;相當于快捷方式&#xff09;跨文件系統支持? 僅限同一文件系統?…

基于SpringBoot+Vue的房屋匹配系統(WebSocket實時通訊、協同過濾算法、地圖API、Echarts圖形化分析)

&#x1f388;系統亮點&#xff1a;WebSocket實時通訊、協同過濾算法、地圖API、Echarts圖形化分析&#xff1b;一.系統開發工具與環境搭建1.系統設計開發工具后端使用Java編程語言的Spring boot框架 項目架構&#xff1a;B/S架構 運行環境&#xff1a;win10/win11、jdk17前端&…

第2節:多模態的核心問題(多模態大模型基礎教程)

前言 本節課我們聚焦多模態大模型最核心的問題&#xff1a;文本、圖像、語音這些“不同語言”的信息&#xff0c;是怎么被模型“翻譯”并互相理解的&#xff1f;我們從“差異”入手&#xff0c;一步步搞懂其中的邏輯。 一、先搞懂&#xff1a;什么是“模態差異”&#xff1f; 生…

Java stream distinct findAny anyMatch實現 :DistinctOp、FindOp、MatchOp

DistinctOpsDistinctOps 是一個專門用于實現 Stream.distinct() 操作的工廠類。正如它的名字所示&#xff0c;它的核心職責就是創建能夠去除流中重復元素的操作。distinct() 是一個有狀態的中間操作 (stateful intermediate operation)&#xff0c;這意味著它通常需要看到所有元…

鎖的基本介紹

鎖 并發編程的一個最基本問題就是原子性地執行一系列指令。鎖有助于直接解決這一問題。 鎖的基本思想 鎖就是一個變量。這個變量保存了鎖在某一時刻的狀態。它要么是可用的&#xff0c;表示沒有線程持有鎖&#xff0c;要么是被占用的&#xff0c;表示有線程持有鎖&#xff0c;正…

【讀代碼】開源流式語音編碼器SecoustiCodec

引言:從LLM到深度語義 在大型語言模型(LLM)驅動的語音交互時代,神經語音編解碼器 (Neural Speech Codec) 扮演著至關重要的角色。它如同 LLM 的“耳朵”和“嘴巴”,負責將連續的語音波形轉換為離散的、可供模型處理的 token,并將模型生成的 token 還原為自然的人聲。 一…

P5967 [POI 2016] Korale 題解

P5967 [POI 2016] Korale 題目描述 有 nnn 個帶標號的珠子&#xff0c;第 iii 個珠子的價值為 aia_iai?。 現在你可以選擇若干個珠子組成項鏈&#xff08;也可以一個都不選&#xff09;&#xff0c;項鏈的價值為所有珠子的價值和。 給出所有可能的項鏈排序&#xff0c;先按…

SwiftUI 頁面彈窗操作

SwiftUI 頁面彈窗操作指南一、基礎彈窗實現1. Alert 基礎警告框2. ActionSheet 操作菜單3. Sheet 模態視圖4. Popover 浮動視圖二、高級自定義彈窗1. 自定義彈窗組件2. 使用自定義彈窗三、彈窗狀態管理1. 使用環境對象管理彈窗2. 彈窗路由系統四、動畫與過渡效果1. 自定義彈窗動…

OpenCV圖像處理2:邊界填充與平滑濾波實戰

前面學了一些關于opencv圖像處理的內容&#xff0c;現在繼續。一 圖像填充邊界填充&#xff08;Border Padding&#xff09;?&#xff0c;即在圖像四周添加指定寬度的像素區域。其核心函數是cv2.copyMakeBorder()&#xff0c;通過不同的填充方式&#xff08;borderType&#x…

imx6ull-驅動開發篇22——Linux 時間管理和內核定時器

目錄 內核時間管理 系統節拍率 高/低節拍率的優缺點 jiffies 節拍數 時間繞回 時間轉換函數 內核定時器 timer_list 結構體 定時器API函數 init_timer 函數 add_timer 函數 del_timer 函數 del_timer_sync 函數 mod_timer 函數 Linux 內核短延時函數 內核時間管…

路由器數據控制管理層面安全

數據層面&#xff1a;FPM Flexible Packet MatchingFPM是CisCOIOS新一代的ACL根據任意條件&#xff0c;無無狀態的匹配數據包的頭部負載&#xff0c;或者全部分析協議&#xff0c;更易于規則的創建用于替代傳統ACL&#xff0c;對特定惡意流量的基礎架構過濾無狀態ipv4單播不支持…

Vue內置組件全解析:從入門到面試通關

文章目錄Vue內置組件全解析&#xff1a;從入門到面試通關引言&#xff1a;為什么需要內置組件&#xff1f;一、Vue內置組件全景圖二、核心內置組件詳解1. <component> - 動態組件2. <transition> - 過渡動畫3. <keep-alive> - 組件緩存4. <slot> - 內容…

VUE+SPRINGBOOT從0-1打造前后端-前后臺系統-會議記錄

在當今快節奏的工作環境中&#xff0c;會議記錄是每個職場人士都必須要面對的任務。傳統的手動記錄方式不僅效率低下&#xff0c;而且容易遺漏重要信息。隨著Web技術的發展&#xff0c;基于瀏覽器的實時語音轉寫技術為會議記錄提供了全新的解決方案。本文將詳細介紹如何利用Web…

WEB3——水龍頭,如何獲得開發用的測試幣、 Sepolia 測試幣?

注意&#xff1a; 有些水龍頭渠道&#xff0c;要求以太坊幣至少有0.01ETH,設有這個門檻&#xff0c;下面并不是所有渠道都能領取到測試幣&#xff0c;有些可能對領取測試幣有要求&#xff0c;如果想獲得獲取以太坊幣的方法&#xff0c;可以看我其他的文章。 本文整理了多個免費…

C++調試革命:時間旅行調試實戰指南

還在為C的懸垂指針、內存泄漏和并發競態抓狂&#xff1f;讓調試器學會“時光倒流” 凌晨三點&#xff0c;std::thread創建的六個線程中有一個突然吞掉了你的數據&#xff0c;valgrind只告訴你“Invalid read”&#xff0c;而時間旅行調試&#xff08;TTD&#xff09;?? 能讓你…

mysql8.0筆記

1.DDL數據定義語言 DDL是什么——————創建、修改、刪除 數據庫和表結構的命令。 基本語法 針對數據庫的操作 -- 創建數據庫 CREATE DATABASE 數據庫名; -- 比如 CREATE DATABASE myschool; --查看所有數據庫 SHOW DATABASES; --使用某個數據庫 USE myschool; -- 刪除數據庫…