JMeter:負載測試關系數據庫

Apache JMeter是完全使用Java編寫的性能測試工具。 可以在請求/響應模型上運行的任何應用程序都可以使用JMeter進行負載測試。 關系數據庫也不例外:接收sql查詢,執行它們并返回執行結果。

我將向您展示使用JMeter的圖形用戶界面設置測試方案有多么容易。 但是在深入研究細節之前,讓我們先介紹一下基本術語:

測試計劃 :描述測試方案
線程組 :代表運行您的測試方案的用戶。
樣本 :一種發送請求和等待響應的方式。 HTTP請求,JDBC請求,SOAP / XML-RPC請求和Java對象請求是示例示例。 邏輯控制器 :用于自定義JMeter用于決定何時發送請求的邏輯 偵聽器 :接收測試結果并顯示報告。 計時器 :導致JMeter在線程發出的每個請求之前延遲一定的時間。 斷言 :測試應用程序是否返回預期的響應

注意這篇文章并不是JMeter的替代文檔。 JMeter的文檔很好。 您可以在其用戶手冊(http://jakarta.apache.org/jmeter/usermanual/index.html)中找到詳細信息。假設我們有一個將每個事務記錄到關系數據庫中的應用程序。我們將創建一個測試計劃–循序漸進–為了回答以下問題。

  • 一秒鐘內可以將幾筆交易記錄插入到交易表中?
  • 將單個交易記錄插入交易表需要多少時間?
  • 并發線程數(用戶)如何影響插入/秒數和平均響應時間?
  • 記錄數如何影響插入/秒數和平均響應時間?

步驟1

將mysql jdbc驅動程序復制到JMeter安裝的lib文件夾中。 JMeter在類路徑中需要合適的jdbc驅動程序以連接到數據庫。

Example ~/tools/jakarta-jmeter-2.3.4/lib/mysql-connector-java-5.0.5.jar

我們將把客戶的訂單和訂單結果存儲在交易表中。

CREATE TABLE transactions (id INT NOT NULL AUTO_INCREMENT,customer_id INT NOT NULL,order_id INT NOT NULL,result INT,PRIMARY KEY (id)
);

第2步

創建一個測試計劃,并將其命名為“ Test MYSQL DB”。 然后將以下jmeter組件添加到測試計劃中。

  1. 名為“數據庫用戶”的線程組
  2. JDBC請求類型的采樣器
  3. JDBC連接配置類型的Config元素
  4. 類型為“ 隨機變量”的三個配置元素
  5. 摘要報告類型的偵聽器

添加這些組件后,JMeter測試計劃如下圖所示。

第三步

配置數據庫用戶。 線程組組件模擬數據庫用戶。
1.用戶數(線程)
2.用戶將發送請求多少次(循環計數)。 如果選擇'Forever' ,則線程將在while(true){…}循環中運行,直到您決定停止測試為止。

第四步

配置JDBC連接池。 JDBC連接配置組件用于創建jdbc連接池。 數據庫URL,jdbc驅動程序,數據庫用戶和密碼均使用此組件進行配置。 連接池由“變量名稱”標識。 JDBC采樣器(請求)使用此變量名稱(連接池名稱)來彈出和推送連接。 我將測試連接池命名為“我的數據庫池”

第5步

定義將在INSERT語句中使用的隨機變量。 在此測試中,我使用了三個隨機變量: 用戶ID,訂單ID和結果 。 下圖顯示了用戶ID的隨機數配置。 隨機數生成器將為我們提供1到1000000之間的隨機整數。我們可以使用名稱user_id來引用生成的隨機數。

第6步

JDBC Request組件是我們告訴用戶(線程)要做什么的地方。 在步驟3 “我的數據庫池”中配置的池的名稱將用作“綁定到池的變量名稱” 。 所有線程將執行準備好的語句。 用戶ID,訂單ID和結果將由隨機數配置器生成(在步驟5中進行描述)

步驟7

現在,我們已將線程配置為將事務記錄插入到事務表中。 在最后一步中,我們將添加摘要報告類型的偵聽器,以查看測試結果。

結果告訴我們,在無限循環中工作的10個并發用戶(線程)可以在事務表中插入近3300行。 插入行所花費的平均時間為2毫秒。 您也可以選擇“圖形結果”偵聽器以查看結果的直觀表示。
我創建并運行了一個簡單的數據庫測試計劃。 希望這篇文章對您有所幫助。 謹記這個座右銘

如果無法衡量,就無法管理也無法改善

測試愉快...

參考: 使用我們的JCG合作伙伴 Ilkin Ulas的JMeter進行負載測試關系數據庫 , 所有您的博客都屬于我們博客。


翻譯自: https://www.javacodegeeks.com/2012/04/jmeter-load-testing-relational.html

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

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

相關文章

new: Set up a window

Nehe的教程確實太老了,不過我認為它也能夠讓我了解OpenGL3.2以前的管線渲染模式,即使它在現在已經不常見了。因為想要了解,所以我還是會看完Nehe的教程。 現在這是一個新的教程 - JoeyDeVries的教程,可以說是網上最好的OpenGL教程…

Python全棧開發:socket

Socket socket通常也稱作"套接字",用于描述IP地址和端口,是一個通信鏈的句柄,應用程序通常通過"套接字"向網絡發出請求或者應答網絡請求。 socket起源于Unix,而Unix/Linux基本哲學之一就是“一切皆文件”&…

oracle sga pga mysql_修改Oracle數據庫SGA和PGA大小

SGA的大小:一般物理內存20%用作操作系統保留,其他80%用于數據庫。SGA普通數據庫可以分配40%-60%之間,PGA可以分配20%-40%之間。1、以dba身份登錄并查看SGA信息:SQL>show parameter sga;查看PGA信息:SQL&…

NetBeans 7.1:創建自定義提示

我已經在帖子中介紹了一些我最喜歡的NetBeans提示 ,這些信息是用于使Java代碼現代化的七個NetBeans提示和七個不可或缺的NetBeans Java提示 。 這兩個帖子中涉及的十四個提示僅占NetBeans支持的“即開即用”提示總數的一小部分。 但是,由于NetBeans 7.1使…

今年暑假不AC

Problem Description “今年暑假不AC?”“是的。”“那你干什么呢?”“看世界杯呀,笨蛋!”“#$%^&*%...”確實如此,世界杯來了,球迷的節日也來了,估計很多ACMer也會拋開電腦,奔向…

qregexp括號匹配_轉:Qt的正則表達式和QRegExp

考慮一下我們經常遇到的問題,比如gemfield想從青島之光讀書(www.civilnet.cn/book)中找一個關鍵的電話號碼,通常第一步就是將書中所有的電話號碼查找出來放在手邊。那么怎么擬定查詢條件呢?電話的格式有如下幾種:01088888888010 8…

具有Tron效果的JavaFX 2 Form

這是一個具有TRON效果的簡單JavaFX登錄表單。 在此示例中,我使用CSS設置TextField和Button的樣式。 這是CSS和Effect代碼的片段: .text-field{-fx-background-color: transparent;-fx-border-color: #00CCFF;-fx-text-fill: white; }.password-field{-fx…

Spring注解Annotion詳解

概述 注釋配置相對于 XML 配置具有很多的優勢: 它可以充分利用 Java 的反射機制獲取類結構信息,這些信息可以有效減少配置的工作。如使用 JPA 注釋配置 ORM 映射時,我們就不需要指定 PO 的屬性名、類型等信息,如果關系表字段和 PO…

CopyOnWrite容器

1.簡介 1.CopyOnWrite是程序優化的策略,當共享的內容需要修改時,復制出去一份進行修改,然后將原來的引用指向修改完的 2.java并發包(java.util.concurrent)中CopyOnWriteArrayList和CopyOnWriteArraySet實現了這個并發容器 3.好處:因為寫時是在復制的一份上操作,所以可以并發的…

Akka的字數統計MapReduce

在我與Akka的日常工作中,我最近寫了一個字數映射表簡化示例。 本示例實現了Map Reduce模型,該模型非常適合橫向擴展設計方法。 流 客戶端系統(FileReadActor)讀取文本文件,并將每一行文本作為消息發送給ClientActor。…

mysql如何設置多節點_詳細介紹Mysql5.7從節點設置多線程主從復制的辦法

軟件安裝:裝機軟件必備包SQL是Structured Query Language(結構化查詢語言)的縮寫。SQL是專為數據庫而建立的操作命令集,是一種功能齊全的數據庫語言。在使用它時,只需要發出“做什么”的命令,“怎么做”是不用使用者考慮的。SQL功…

python學習筆記 可變參數關鍵字參數**kw相關學習

在Python中可以定義可變參數,顧名思義,可變參數就是傳入參數是可變的。可以是任意個,以一個簡單的數學編程為例,計算 sum a * a b * b .....z * z 函數定義可以如下: def getsum(num) :sum 0for n in num :sum su…

Struts2之環境配置

在學習struts2之前,首先我們要明白使用struts2的目的是什么?它能給我們帶來什么樣的好處? 設計目標 Struts設計的第一目標就是使MVC模式應用于web程序設計。在這兒MVC模式的好處就不在提了。 技術優勢 Struts2有兩方面的技術優勢,…

mysql數據庫備份shell_mysql數據庫備份shell腳本分享

#!/bin/bash#2020年04月27日15:56:21#auto backup mysql db#by author www.cnbugs.com########################SQL_DB"$*"SQL_USR"backup"SQL_PWD"123456"SQL_CMD"/usr/bin/mysqldump"SQL_DIR"/data/backup/date %F"if [ $…

懶惰的JSF Primefaces數據表分頁–第1部分

今天,我們將使用帶有視圖范圍的托管bean的惰性列表進行JSF數據表分頁。 這些單詞/表達式是什么意思? 如今,有幾個JSF框架為數據表提供現成的分頁,列排序器和其他功能。 今天,我們將使用Primefaces數據表。 通常&#…

java 動態增加定時任務

直接上代碼 import org.apache.tools.ant.util.DateUtils; import org.quartz.CronTrigger; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SchedulerFactory; import org.quartz.impl.StdSchedulerFactory;import java.util.Calendar; import…

基于JavaFX的SimpleDateFormat演示程序

對于使用Java Date進行格式化的新手甚至對于使用Java Date進行格式化的有經驗的Java開發人員而言,可能有些棘手的事情是使用SimpleDateFormat規范日期/時間格式。 SimpleDateFormat的基于類級別的Javadoc的文檔非常詳盡,涵蓋了表示日期/時間的各個組成部…

mysql中預定義常量_PHP預定義常量

這些常量在 PHP 的內核中定義。它包含 PHP、Zend 引擎和 SAPI 模塊。PHP_VERSION (string)PHP_OS (string)PHP_EOL (string)自 PHP 4.3.10 和 PHP 5.0.2 起可用PHP_INT_MAX (integer)自 PHP 4.4.0 和 PHP 5.0.5 起可用PHP_INT_SIZE (integer)自 PHP 4.4.0 和 PHP 5.0.5 起可用D…

iOS與H5交互

前提:在iOS控制器中加載UIWebView,設置代理,遵守UIWebViewDelegate協議。 一、iOS調用JS方法 通過iOS調用JS代碼實現起來比較方便直接調用UIWebView的方法- (nullable NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script…

cocos2dx 3.x 蒙板 遮罩 點擊圓功能

//注冊觸摸EventListenerTouchOneByOne *listener EventListenerTouchOneByOne::create();listener->onTouchBegan CC_CALLBACK_2(HelloWorld::onTouchBegan,this);listener->onTouchMoved CC_CALLBACK_2(HelloWorld::onTouchMoved,this);listener->onTouchEnded …