利用jmeter对mysql数据库进行压力测试

上传人:壹****1 文档编号:444684245 上传时间:2023-09-23 格式:DOCX 页数:13 大小:448.45KB
返回 下载 相关 举报
利用jmeter对mysql数据库进行压力测试_第1页
第1页 / 共13页
利用jmeter对mysql数据库进行压力测试_第2页
第2页 / 共13页
利用jmeter对mysql数据库进行压力测试_第3页
第3页 / 共13页
利用jmeter对mysql数据库进行压力测试_第4页
第4页 / 共13页
利用jmeter对mysql数据库进行压力测试_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《利用jmeter对mysql数据库进行压力测试》由会员分享,可在线阅读,更多相关《利用jmeter对mysql数据库进行压力测试(13页珍藏版)》请在金锄头文库上搜索。

1、利用 jmeter 对 mysql 数据库进行压力测试前期准备工作:Jmeter 的安装包可以在公司 W:engineeringsoftwarelinuxjmeter 下可以找 到o Jmeter的运行需要java环境的支持的,要运行jmeter首先要安装JDK java 运行环境,此安装包可以在公司的 W:engineeringsoftwarelinuxjava 下找 到。此外要使用jmeter对mysql进行压力测试还要安装mysql的JDBC驱动,例 如驱动包 mysql-connector-java-5.1.14-bin 放到 jmeter 的解压包下的 lib 文 件夹下。这样测试环

2、境就部署好了,接下来进行测试计划的创建。创建测试计划:1. 添加用户(1) 添加线程组测试计划9添加9线程组,如下图所示。线程组錐续0倍止践程0倍止测试 銭程属性Ramp-Up P&riod (in seconds: 1狷曲真埶 永远”I周度器蜒程组I:iff:在肌祥器错课启要枫务的动作“线程数”表示的是 JMeter 会同时创建多少个线程来进行压力测试,对于一个 网站而言,也就是模拟一次存在多少个用户来访问该网站;而Ramp-Up Period(in sec on ds)”表示JMeter每个秒发动多少并发;循环次数”则是指配置好的并发情形 发生多少次。这里新增一个线程组,重命名为“JDBC

3、 USER ”,如下图所示。 在线程组”下创建一个User Defined Variables”JDBC USER 9天加一 配置元器件9用户自定义的变量即用户自定义变量,重命名为“我们定义的动态语句部分”,这里我们使用 它来生成动态SQL语句,让用户每次访问数据库的SQL语句都不一样,这样减少 mysql数据库对相同SQL语句的缓存对测试结果所带来的影响。可以用Ctrl + F来打开函数代码辅助工具生成我们所需的函数调用。2) 接下来是配置 JDBC 连接设置JDBC USER 9 添加 一 配置元器件 9JDBC ConnectionConfigurationJDBC Connection

4、 Configuration名称二JDBC Conneclion ConfigurationVariable Hamo Bound t& PoolVariable Name: MYSQLCoran&ction P&ol ConfigurationJDBC Driver claasiUsername;Password:匚oneihelion ValFdaliun by PoolDatabase Conn action ConftgurationDatabase URL:(3)创建一个具体的JDBC请求JDBC USER 9 添加9Sampler9JDBC Request,如下图所示。名称Koca

5、kVariable Mams:M/sqlJDBC RequestSQL QueryParametervalu&SL 昭_Random(1,200,accourtde-0_.AC00UNT_IDParameter types: iniselect acccuntserO_.ID as ID4&_0_, a cco u nts erO_. ACC QU Nfl as ACCOUNT2_45_0_1 acccuntserO_.NAME sb NAME45_0accDuntserO_.DESCRIP710N as DESCRIPT4_45_0_, accountserO_ TAGS as TAGS45

6、_0._. accounts&r0_.WEB8FTE asWESSITE45_0_. acccuntserO_.EXPERIENCE as EXPERIENCE45._0_from wrtmysql.account_service accounts&r0_ wherea ccd u nts e r0_. ACCQ U NT_I = ?:Q:H&jy Tpe: Pr&par&d Select Statementthe Pool Name: MySQL (same as in the configuration element)Query Type中选择的是预编译语句;SQL语句当中,动态内容的代

7、码行是 where accountserO_.ACCOUNT_ID二?,这里的?就是预编译语句中的动态参数, 在属性页下面的Parame ter Values”和Parame ter types来指定,由于预编译 语句在Java教程已有很多讲解,这里不再赘述。(4)创建监听器JDBC USER 添加 监听器 图形结果(5)保存测试计划文件 保存测试计划案例http:/ 但是却常常忽略了软件开发之后的压力测试,尤其是在面向大量用户同时使用的 Web应用系统的开发过程,压力测试往往是不够充分的。近期我在一个求职招聘 型的网站项目中就对压力测试的重要性体会颇深。在项目中,我负责开发职位信息的搜索部

8、分,但是由于缺乏压力测试,仓促 将搜素部分的功能提交到生产环境,结果当并发量稍稍到达一定程度时,数据库 系统便已经不堪重负。无奈之下向网上资源查询解决方法,其中一个就是对现有 的应用做足够到位的压力测试。压力测试有着很丰富的内容,而这里,我只针对应用中所遇到的问题以及解 决方法做一个简单的描述,希望对以后遇到同样问题的朋友能够起到些许帮助作 用。我自己做的例子使用的环境是:测试工具:JMeter 2.3.1数据库:Oracle 10G其他环境:JDK 1.6.0_05(也可以使用JDK1.4及以上版本)1.创建好的JMeter测试计划树形结构图如下:亍払懊的的救幄鱷测轼讣珈 I ;使劭庚北的藝

9、L来融歌诺隼国力测试 渺戳帕定文的动憲沿旬 粉血BC连協设賣 彳*产品塔堂丈羌曬爭JDBC Request 卜才严晶名li炖JOBC Recfue 测试詢花険性JDBC Reqist叵I甲衰胳来看响应吐杲 囹樹形斤式若结果 囹曲理WorkB&rcth2. 在刚打开JMe ter的时候,默认会存在两个节点,一个是“ Test Plan,点击这个节点,在右边的属性页面中,命名为“我们的数据库测试计划”在属性页的最下面,我们看到设置jar包所在路径的选项,默认存在一个 选项E:so ft waredeveloptestunitjMe ter jakar tajme ter2.3.1lib,这个是我的

10、机器中JMeter的lib目录,在这个例子中,Oracle的jdbc驱动也 已经拷贝到该目录下。内容导航3. 新增一个“ Thread Group”,重命名为“使用变化的SQL来做数据库压 力测试。其 中,Number of Threads表示的是JMeter会同时创建多少个 线程来进行压力测试,对于一个网站而言,也就是模拟一次存在多少个用户来访 问该网站;而 Ramp-Up Period(in seconds)表示JMeter每个多少秒发动并 发;Loop Count”则是指配置好的并发情形发生多少次。4. 在“Thead Group下创建一个“User Defined Variables”

11、,即用户自 定义变量,重命名为我们定义的动态语句部分”,这里我们使用它来生成动态 SQL语句,让用户每次访问数据库的SQL语句都不一样,这样减少Oracle数据 库对相同 SQL 语句的缓存对测试结果所带来的影响。CornmemsName: |我们定乂的动态甬锯丹User Defined Variablesuscf Derm eti variablesNamef Valuestr$_split(D610or3gie本Q61D or ”2。|2。服务器.keywordj)mzny.sqip name like *%D610%or pname tike %AJX抵pname !fke F笔smt澱

12、一创i!%讪n 7织简讹|)变量定义的完整内容如下:NameValue-strJLsplit(D610 ofMt3|D610 or n620|D620|器民河od)many_ sqlp_name like DGIOor p_name like MXI f_name like 绥笔记本喝 orp_name like TO610W|p name likeD610%J| p name likeIX%-srrit辭 splitrriany Bql,smt,|)注:$_split(.) 是 JMeter 中自带的拆分字符串为数组的函数,可以 通过JMeter工具栏Options-Function Hel

13、per Dialog来打开函数代码辅助 工具生成我们所需的函数调用。另外有个需要注意的问题是:在$_split(.) 中,如果拆分字符串中的 内容包含有符号,,一定得用符号进行转义,否则可能被JMeter误认为是 参数分隔符,会导致无法正确生成字符串数组。内容导航5. 接下来是配置JDBC连接设置JDBC Connection ConfigurationName: |jDB连接设蛊Comments:Variable Name Bound to P?jo!Variable Name:Connection P导也 Configuration匚onnection Validation 昨 PuulD

14、atabase Conneciion ConfigurationDatabase URL:jcibd;oracle:triin:i:27.O.O.1:1 521OracleJDBC Driver class:oratle.jdbc.driyer.OracleDriverUsername:testPassword:;test6. 创建一个具体的JDBC请求JDBC Request麻简世p巳墙全冥关程字JDei5 Rg4LJQStiCcmmcntE:VaFile Nanus Gniuid to Poolk/ariahlEMaEtic:SQL QtitjfyGuery lypo: tTofiarcdsieclSlateineiitQueryselectFROm (se-lect p.p_id, p p_narmc, c. cm|:_n aims from teGt_product p, tBst_coFnpan c wh0e p.tfnp_id - c.cmp日anc corrtainsfp .p_name, * 0and

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号