您的位置:軟件測(cè)試 > 開(kāi)源軟件測(cè)試 > 開(kāi)源性能測(cè)試工具 > Jmeter
測(cè)試您的DB2數(shù)據(jù)庫(kù):用JMeter測(cè)量性能
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2012/11/30 13:33:15 ] 推薦標(biāo)簽:

級(jí)別: 初級(jí)

Kulvir Singh Bhogal, IBM 電子商務(wù)顧問(wèn), Austin, TX

2004 年 11 月 01 日

    作者 Kulvir Singh Bhogal 介紹了一個(gè)叫作 JMeter 的開(kāi)放源代碼工具,該工具可以測(cè)量 DB2 Universal Database 的查詢性能和吞吐量。

簡(jiǎn)介

在當(dāng)今快節(jié)奏的世界中,只是完成工作是不夠的。完成工作,并且要以簡(jiǎn)便的方式完成工作,這才是關(guān)鍵。數(shù)據(jù)庫(kù)世界也不能幸免這種對(duì)性能的渴求?蛻粝M軌蜓杆俣行У乇4婧吞崛∑鋽(shù)據(jù)。在許多場(chǎng)合設(shè)置中,IBM 的 ® DB2® Universal Database TM 都擁有的性能跟蹤記錄,于眾多的數(shù)據(jù)庫(kù)競(jìng)爭(zhēng)對(duì)手。

不幸的是,由于數(shù)據(jù)庫(kù)或者配置中的某些設(shè)計(jì)缺陷,許多 DB2 用戶可能無(wú)法獲得 DB2 性能的所有益處。有許多關(guān)于 DB2 性能調(diào)整的文章和論文,DB2 中也有許多能夠進(jìn)行深入分析的好工具。我將在這篇文章中介紹一個(gè)工具 —— Apache 的 JMeter,這是另外一個(gè)可以添加到您的工具箱中的工具,它可以幫助您了解數(shù)據(jù)庫(kù)的性能,還能幫助您進(jìn)行模擬測(cè)試。

關(guān)于 Apache JMeter

JMeter 是 Apache Jakarta 項(xiàng)目麾下的一個(gè)產(chǎn)品。JMeter 是基于 Java TM Swing 的桌面應(yīng)用程序,是為進(jìn)行負(fù)載測(cè)試、測(cè)量系統(tǒng)性能而設(shè)計(jì)的。初,它是為測(cè)試 Web 應(yīng)用程序而設(shè)計(jì)的。但是它后來(lái)進(jìn)行了擴(kuò)展,現(xiàn)在您已經(jīng)可以用它來(lái)測(cè)試關(guān)系數(shù)據(jù)庫(kù)了(通過(guò) JDBC TM)。在 JMeter 的官方站點(diǎn)http://jakarta.apache.org/jmeter/上,您可以了解關(guān)于它的更多內(nèi)容。

利用 JMeter,您可以確保您的數(shù)據(jù)庫(kù)可以滿足某些指標(biāo)(例如能夠處理一定數(shù)量的并發(fā)用戶)。模擬測(cè)試是成功項(xiàng)目的關(guān)鍵。JMeter 可以針對(duì) DB2 模擬出繁重的負(fù)載。這可以通過(guò) JMeter 的多線程框架來(lái)實(shí)現(xiàn)。JMeter 的多線程框架允許大量線程進(jìn)行并發(fā)采樣。正如您將在本文后面看到的,JMeter 能為您提供圖形化的反饋。

獲得 JMeter 并設(shè)置您的測(cè)試環(huán)境

您可以從http://jakarta.apache.org/builds/jakarta-jmeter/release/下載 JMeter 的新發(fā)行版。在我撰寫(xiě)這篇文章時(shí),新的 JMeter 版本是 1.8。JMeter 要求在 Sun 的 JDK1.4(或者更高)環(huán)境中工作。IBM JDK(指當(dāng)前版本)似乎與 JMeter 不兼容。JMeter 已經(jīng)在各種 UNIX® 變體 (包括 Solaris 和 Linux) 和 Windows®(98®、NT® 和 2000®)上通過(guò)了測(cè)試。

為了方便我們對(duì) DB2 進(jìn)行的 JDBC 測(cè)試,需要把 DB2 的 JDBC 驅(qū)動(dòng)程序復(fù)制到 <jmeter 安裝目錄>jakarta-jmeterlib 目錄下。對(duì)于 DB2 8.1 ,在默認(rèn)安裝情況下,DB2 驅(qū)動(dòng)程序的位置是 c:program filesibmsqllibjavadb2java.zip。奇怪的是,如果 DB2 的 JDBC 驅(qū)動(dòng)程序以 zip 文件命名,JMeter 將找不到 DB2 的 JDBC 驅(qū)動(dòng)程序。要解決這個(gè)問(wèn)題,您必須將文件名更改為 .JAR 文件。您可以把 lib 目錄中的文件改名為 db2java.jar。另一方面,如果想測(cè)試 DB2 8.1 Java Common Client (JCC) 驅(qū)動(dòng)程序,只需將 db2jcc.jar文件復(fù)制到 JMeter 的 lib 目錄下即可(不用更改名稱)。

在沙箱中放沙子

在我們開(kāi)始使用 JMeter 之前,我們需要建立一個(gè)有一些測(cè)試數(shù)據(jù)的數(shù)據(jù)庫(kù)。

    在 DB2 的命令行處理器中輸入以下內(nèi)容:

    
    create db loaddb


    連接 loaddb 數(shù)據(jù)庫(kù),如下所示:

    
    connect to loaddb user db2admin using db2admin


    建立一個(gè)表,保存我們的測(cè)試數(shù)據(jù):

    
    create table loadtable (col1 varchar(25) not null,
    col2 varchar(25) not null,
    col3 varchar(25) not null)


    用大量記錄填充表,這樣我們才能用 JMeter 來(lái)測(cè)試查詢性能。我用了一個(gè)小小的 JDBC 程序來(lái)完成這項(xiàng)工作,在清單1中可以看到它,該程序?qū)⒃诳裳b入表中插入 30,000 條記錄。然后編譯并執(zhí)行這段代碼,用測(cè)試數(shù)據(jù)填充可裝入表。

清單 1. 將記錄插入數(shù)據(jù)庫(kù)

 
package com.ibm.jmetertest;
import java.sql.*;
 
public class JMeterPopulator
{
  public static void main(String[] args)
  {
    try
    {
      Class.forName("COM.ibm.db2.jdbc.app.DB2Driver");
 String dbName = "loaddb";
 String url = "jdbc:db2:" + dbName;
 String userName = "db2admin";
 String password = "db2admin";
 Connection con
          = DriverManager.getConnection(url,userName, password);
 int numOfTestRecords = 30000;
 PreparedStatement statement
          = con.prepareStatement("INSERT INTO LOADTABLE VALUES(?,?,?)");
 for (int i =0; i<numOfTestRecords; i++)
 {
   statement.setString(1,"Col1Test-" + i);
   statement.setString(2,"Col2Test-" + i);
   statement.setString(3,"Col3Test-" + i);
   statement.executeUpdate();
   System.out.println(i);
 }
    }
    catch(Exception e)
    {
       System.out.println("An error has occurred: " + e.toString());
       e.printStackTrace();
    }
  }
}
現(xiàn)在我們有了相當(dāng)數(shù)量的記錄,讓我們用 JMeter 來(lái)測(cè)試一下查詢性能。

進(jìn)入 JMeter

要啟動(dòng) JMeter,需要運(yùn)行 <jmeter 安裝目錄 >jakarta-jmeterin 目錄下的 jmeter.bat 文件。

當(dāng)啟動(dòng) JMeter 時(shí),您會(huì)看到一個(gè)主屏幕,屏幕左邊有一個(gè)面板,其中還沒(méi)有定義測(cè)試計(jì)劃(參見(jiàn) 圖 1)。在 JMeter 中,一個(gè)測(cè)試計(jì)劃是由一個(gè)或多個(gè)線程組構(gòu)成的。線程代表模擬用戶, 線程組(thread group)是一組模擬用戶。

圖 1. JMeter 的主屏幕

讓我們從建立線程組開(kāi)始。方法是右擊 TestPlan 節(jié)點(diǎn),選擇 Add => Thread Group。參見(jiàn) 圖 2。

上一頁(yè)1234下一頁(yè)
軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠(chéng)聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd