频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

测试您的DB2数据库:用JMeter测量性能

来源: 作者:Kulvir Singh Bhogal 出处:巧巧读书 2007-11-04 进入讨论组
下一页 1 2 3 

简介

在当今快节奏的世界中,只是完成工作是不够的。完成工作,并且要以最简便的方式完成工作,这才是关键。数据库世界也不能幸免这种对性能的渴求。客户希望能够迅速而有效地保存和提取其数据。

在许多场合设置中,IBM 的 ? DB2? Universal Database TM 都拥有领先的性能跟踪记录,领先于众多的数据库竞争对手。

不幸的是,由于数据库或者配置中的某些设计缺陷,许多 DB2 用户可能无法获得 DB2 性能的所有益处。有许多关于 DB2 性能调整的文章和论文,DB2 中也有许多能够进行深入分析的好工具。我将在这篇文章中介绍一个工具 —— Apache 的 JMeter,这是另外一个可以添加到您的工具箱中的工具,它可以帮助您了解数据库的性能,还能帮助您进行模拟测试。


关于 Apache JMeter

JMeter 是 Apache Jakarta 项目麾下的一个产品。JMeter 是基于 Java TM Swing 的桌面应用程序,是为进行负载测试、测量系统性能而设计的。最初,它是为测试 Web 应用程序而设计的。但是它后来进行了扩展,现在您已经可以用它来测试关系数据库了(通过 JDBC TM)。在 JMeter 的官方站点 http://jakarta.apache.org/jmeter/ 上,您可以了解关于它的更多内容。

利用 JMeter,您可以确保您的数据库可以满足某些指标(例如能够处理一定数量的并发用户)。模拟测试是成功项目的关键。JMeter 可以针对 DB2 模拟出繁重的负载。这可以通过 JMeter 的多线程框架来实现。JMeter 的多线程框架允许大量线程进行并发采样。正如您将在本文后面看到的,JMeter 能为您提供图形化的反馈。


获得 JMeter 并设置您的测试环境

您可以从 http://jakarta.apache.org/builds/jakarta-jmeter/release/ 下载 JMeter 的最新发行版。在我撰写这篇文章时,最新的 JMeter 版本是 1.8。JMeter 要求在 Sun 的 JDK1.4(或者更高)环境中工作。IBM JDK(指当前版本)似乎与 JMeter 不兼容。JMeter 已经在各种 UNIX? 变体 (包括 Solaris 和 Linux) 和 Windows?(98?、NT? 和 2000?)上通过了测试。

为了方便我们对 DB2 进行的 JDBC 测试,需要把 DB2 的 JDBC 驱动程序复制到 <jmeter 安装目录>\jakarta-jmeter\lib 目录下。对于 DB2 8.1 ,在默认安装情况下,DB2 驱动程序的位置是 c:\program files\ibm\sqllib\java\db2java.zip。奇怪的是,如果 DB2 的 JDBC 驱动程序以 zip 文件命名,JMeter 将找不到 DB2 的 JDBC 驱动程序。要解决这个问题,您必须将文件名更改为 .JAR 文件。您可以把 lib 目录中的文件改名为 db2java.jar。另一方面,如果想测试 DB2 8.1 Java Common Client (JCC) 驱动程序,只需将 db2jcc.jar文件复制到 JMeter 的 lib 目录下即可(不用更改名称)。

在沙箱中放沙子

在我们开始使用 JMeter 之前,我们需要建立一个有一些测试数据的数据库。

  1. 在 DB2 的命令行处理器中输入以下内容:
        
    create db loaddb
  2. 连接 loaddb 数据库,如下所示:
        
    connect to loaddb user db2admin using db2admin
  3. 建立一个表,保存我们的测试数据:
        
    create table loadtable (col1 varchar(25) not null, col2 varchar(25) not null, col3 varchar(25) not null)
  4. 用大量记录填充表,这样我们才能用 JMeter 来测试查询性能。我用了一个小小的 JDBC 程序来完成这项工作,在清单1中可以看到它,该程序将在可装入表中插入 30,000 条记录。然后编译并执行这段代码,用测试数据填充可装入表。

清单 1. 将记录插入数据库 

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(); } } }

现在我们有了相当数量的记录,让我们用 JMeter 来测试一下查询性能。

进入 JMeter

要启动 JMeter,需要运行 <jmeter 安装目录 >\jakarta-jmeter\bin 目录下的 jmeter.bat 文件。

当启动 JMeter 时,您会看到一个主屏幕,屏幕左边有一个面板,其中还没有定义测试计划(参见 图 1)。在 JMeter 中,一个测试计划是由一个或多个线程组构成的。线程代表模拟用户, 线程组(thread group)是一组模拟用户。

图 1. JMeter 的主屏幕
测试您的DB2数据库:用JMeter测量性能(图一)
点击查看大图

让我们从建立线程组开始。方法是右击 TestPlan 节点,选择 Add => Thread Group。参见 图 2


图 2. 添加线程组
测试您的DB2数据库:用JMeter测量性能(图二)

在下一个屏幕中(参见 图 3),您可以定义测试中所要包含的线程或模拟用户的数量。 等候周期(Ramp-Up Period)指定了 JMeter 在向数据库暴露模拟用户之前应当等待的时间。例如,如果我们有 30 个模拟用户,等候周期为15秒,那么我们就会每秒向数据库暴露 2 个用户(30 个用户/15 秒)。如果将等候周期设置为 0,JMeter 会自动一次启动所有模拟用户。循环计数(Loop Count)指定了 JMeter 要重复测试的次数。在这个屏幕中,还可以修改我们的线程组名称。接下来按 图 3 所示输入设置,这将为我们提供 30 个同时启动的用户。该测试将运行 100 次。


图 3. 线程组的设置
测试您的DB2数据库:用JMeter测量性能(图三)保留:: http://www.qqread.com/db2/w379761.html 更多文章 更多内容请看DB2DB2中的数据处理数据库专栏专题,或进入讨论组讨论。
下一页 1 2 3 
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章