使用JMeter對異步HTTP / REST服務進行壓力/負載測試

盡管我一直在使用JMeter進行Web應用程序的壓力測試和負載測試好幾次,但我們還是花了一些時間才弄清楚如何使用該工具測試基于異步HTTP / REST的服務。 在我們這里,我是指一名程序員, Holger Staudacher ,我很榮幸能與當前的一個項目一起工作。

當Holger基于對上述項目進行功能和集成測試的經驗而開發了Restfuse時 ,我們決定使用JMeter進行壓力和負載測試。 被測軟件的主要服務處理上傳到特定URL的數據結構。 如果上傳過程成功,則返回指向包含處理結果的資源的URL。 產生的資源無法立即使用-處理需要一段時間。 因此,輪詢可用于在資源可用時檢索資源1

我們的目標是在一次測試中測量上載數據結構,處理數據和下載結果資源所花費的時間。 同時運行多個用戶的這種測試應該使我們對系統的吞吐量能力有一個良好的印象。 聽起來不太復雜,但是…

…使用JMeter機載功能為上一段中描述的場景編寫測試計劃的第一種方法效果不佳。 計劃既不可理解,也不是(更糟的是)使測量結果毫無意義。 特別是將上載請求和輪詢循環與事務控制器一起鉗制似乎對計時器產生了一些意外的副作用。 因此,經過一段時間的Google額外研究之后,我偶然發現了JavaSamplerClient API ,這是我以前所不知道的。

stackoverflow.com上有一個條目,描述了如何擴展AbstractJavaSamplerClient ( JavaSamplerClient的實現)并在JMeter使用它。 因此,這就是解決我們的問題的方法。 我們創建了AbstractJavaSamplerClient的擴展,以覆蓋runTest(JavaSamplerContext) 。 在該方法中,我們使用HttpClient執行上載和輪詢請求。 一旦輪詢請求成功檢索到處理結果,所有標頭和內容信息都將存儲在SampleResult實例中。 后者由覆蓋的測試采樣器方法返回,由JMeter進行進一步處理–非常簡單2

創建包含自定義JavaSampleClient的jar并將其放入JMeter安裝目錄下的lib/ext/文件夾后,可以將Sampler類型的Java Request添加到Thread Group 。 這使您可以選擇和配置自定義采樣器,如下圖所示:

使用JavaSamplerClient使我們的測試計劃變得非常簡單,并允許我們使用通用的JMeter結果測量功能,如下圖所示,在Graph Results視圖中:

當然,測量結果現在是合理的……

由于我們不得不花很長時間才能做到這一點,所以我認為我們的解決方案也可能對其他人很感興趣-這就是寫這篇文章的原因。 但是,如果有我們沒有注意到的更簡單的解決方案,也很高興收到您的來信。 因此歡迎提供反饋

  1. 我們開始使用網絡掛接 ,但我們的客戶有問題,說服IT管理員打開防火墻... ?
  2. 為了使本文的篇幅合理,我跳過了關于如何處理不成功請求的任何描述,但是我們的大多數實施工作都必須在該領域中完成…… ?


參考:來自Code Affine博客的JCG合作伙伴 Frank Appel的JMeter對異步HTTP / REST服務進行壓力/負載測試 。

翻譯自: https://www.javacodegeeks.com/2012/11/stressload-testing-of-asynchronous-httprest-services-with-jmeter.html

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

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

相關文章

轉義字符的使用和功能python_Python中轉義符和格式符的混合使用,python,轉義字符,與,格式化...

# coding: utf-8 mon 麻辣小龍蝦 #周一麻辣小龍蝦 tue 宮保雞丁 #周二宮保雞丁 wed 水煮肉片 #周三水煮肉片 thu 果兒拌菜 #周四果兒拌菜 fri 小雞燉蘑菇 #小雞燉蘑菇 Cf_price 23 #麻辣小龍蝦價格 CK_price 12 #宮保雞丁價格 BM_price 32 #水煮肉片價格 MV_price 19 …

mock接口開發,excel(讀,寫,修改)

mock接口開發 首先需要安裝 Flask 模塊 :pip install flask 然后引用 from flask import request #想獲取到請求參數的話,就得用這個 lanxia flask.Flask(__name__) #把這個python文件當做一個web服務 lanxia.server(/login,[ post , get ] )#第…

web前端學習之ruby標記和rt/rp標記

ruby 標記定義ruby注釋(中文注音或字符)。ruby標記與rt標記一同使用。ruby標記由一個或多個字符(需要一個解釋/發音)和一個提供該信息的rt 標記組成,還包括可選的rp標記,定義當瀏覽器不支持ruby 標記時顯示…

mysql 5.7 udf http_mysql下mysql-udf-http效率測試小記

看到張宴的博客上關于"http/rest客戶端的文章",怎樣安裝啥的直接都跳過,下面直接進入測試階段,測試環境:虛擬機復制代碼 代碼如下:[rootlocalhost ~]# uname -aLinux sunss 2.6.18-128.el5 #1 SMP Wed Jan 21 10:44:23 …

作為一名程序員,聊聊我們的現狀和未來

前言:互聯網這個高速發展的新興行業,注定是敢想敢干敢創新,耐勞耐操耐折騰年輕人的天下? 我們所在的互聯網行業,不斷地有新的公司冒出,有新的商業模式成形,有新的產品形態影響著大家的生活日常&…

適用于孩子,父母和祖父母的JBoss HornetQ –第1章

現在與HornetQ合作已經快4年了,我認為是時候分享我到目前為止所學知識的一部分了。 這篇文章的主要目的不是重寫官方文檔 ,而是以簡單的方式闡明我們在PaddyPower中最常用的概念。 什么是HornetQ HornetQ是JMS實現。 JMS是一種面向消息的中間件API&am…

riot.js教程【四】Mixins、HTML內嵌表達式

前文回顧riot.js教程【三】訪問DOM元素、使用jquery、mount輸入參數、riotjs標簽的生命周期;riot.js教程【二】組件撰寫準則、預處理器、標簽樣式和裝配方法;riot.js教程【一】簡介; 共享Mixins 混合開發可以使你很好的復用代碼,如…

移動端判斷手機橫豎屏狀態

禁用用戶自動縮放功能&#xff1a; <meta name"viewport" content"widthdevice-width, initial-scale1.0, maximum-scale1.0, user-scalable0"> 判斷橫豎屏狀態有兩種方法&#xff1a;css判斷、js判斷 (一)、css判斷橫屏還是豎屏 1、寫在同一個css文…

ubuntu dhcp ping 不通 自己_??2、DHCP安裝和配置

DHCP動態主機設置協議&#xff0c;是一個局域網的網絡協議&#xff0c;使用UDP協議工作&#xff0c;可以快速分配IP地址&#xff0c;解決內網IP不足、手動配置IP造成IP沖突以及內網機器多手工配置比較麻煩的問題。1.把win2008和win2003設置同一網段&#xff0c;網絡適配器—配置…

python秒數變日期_將pandas日期列轉換為已用秒數

新答案 將文本轉換為Timedeltadf[Origin Time(Local)] pd.to_timedelta(df[Origin Time(Local)]) df[Seconds] df[Origin Time(Local)].dt.total_seconds() 舊答案 考慮數據幀dfdf pd.DataFrame(dict(Datepd.date_range(2017-03-01, 2017-03-02, freq2H))) Date 0 2017-03-0…

mysql用一個表更新另一個表的方法

Solution 1: 修改1列(navicate可行) update student s, city c set s.city_name c.name where s.city_code c.code; Solution 2: 修改多個列 update a, b set a.titleb.title, a.nameb.name where a.idb.id Solution 3: 采用子查詢(navicate不可行) update student s set…

選擇您的Java EE 6應用服務器

我被問到的第一個問題是&#xff1a;“我們應該使用哪個Java EE應用服務器&#xff1f;”。 隨著Java EE 6的日益普及&#xff0c;新的兼容應用程序服務器獲得了認證。 當前的官方兼容性和認證矩陣列出了針對完全配置文件&#xff0c;Web配置文件或兩者認證的12種不同產品。 如…

串的基本計算

#include<stdio.h> #include<stdlib.h> //typedef int Status; #define Max 20 #define OK 1 #define ERROR 0 #define OVERLOE -2 typedef struct//堆分配表示串 { char *ch; int length; }HString; // int CreatHString(HString &H)//構造字符串 { H.length …

HTML表格屬性及簡單實例

這里主要總結記錄下表格的一些屬性和簡單的樣式&#xff0c;方便以后不時之需。 1、<table> 用來定義HTML的表格&#xff0c;具有本地屬性 border 表示邊框&#xff0c;border屬性的值必須為1或空字符串("")。該屬性不會控制邊框的樣式&#xff0c;而是由CSS來…

怎么查看MySQL 源碼編譯了什么_Mysql 源碼編譯教程貼

題外話:這是一篇教程貼,不僅學的是mysql的編譯,還是一些編譯的知識.我也是一個菜鳥,寫一些感悟和心得,有什么問題可以批評指正,謝謝!如果只是為了安裝請移到我的另一篇安裝貼: Mysql安裝貼環境:OS: CentOS 6.6x64 minimysql: mysql-5.6.251. mysql 下載:http://dev.mysql.com/d…

linux mysql啟動_MySQL 安裝(二)

MySQL 安裝所有平臺的Mysql下載地址為&#xff1a;MySQL 下載 . 挑選你需要的 MySQL Community Server 版本及對應的平臺。Linux/UNIX上安裝MySQLLinux平臺上推薦使用RPM包來安裝MySQL&#xff0c;MySQL AB提供了以下RPM包的下載地址&#xff1a;MySQL - MySQL服務器。你需要該…

0524駝峰命名法,模態對話框

模態對話框 window.showModalDialog("url"&#xff0c;"向目標對話框傳的值"&#xff0c;"窗口特征參數") 打開模態對話框 模態對話框必須關掉才能對后端操作。 模塊對話框和窗口的區別是永遠置頂。 特征參數&#xff1a;用分號隔開&#xff0c;…

誰在偷你的記憶? 應用服務器版

您創建了一個了不起的應用程序。 您將其投入生產。 您會發現您沒有足夠的可用內存。 即使您的所有測量結果&#xff08;可能是借助我們的小型公用事業公司進行的測量 &#xff09;都表明您應該還不錯。 我們計劃發布一系列博客文章&#xff0c;研究堆消失的位置&#xff0c;并…

遺忘的html標簽

1 <span>x</span><sup>2</sup><span> y10</span> 2 <br> 3 <span>H</span><sub>2</sub><span>O</span> <sup> 標簽可定義上標文本。 包含在 <sup> 標簽和其結束標簽 …

Android四大組件之BroadcastReceiver

什么是BroadcastReceiver? BroadcastReceiver(廣播接收器)&#xff0c;顧名思義&#xff0c;是用來接收廣播的。Android內部實現了一套廣播通信機制&#xff0c;即在某個應用或某個組件注冊廣播接收器&#xff0c;接收特定類型的廣播。當別的應用或組件發送該類型的廣播時&…