版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
利用jmeterjavasample端口转发实现对远
程数据库的压力测试1需求背景对数据库进行压力测试时,需要模拟同一时间大量的sql请求发送,借助于jmeter的sql请求可以实现,但是对RDS来说,需要进行端口映射(跳板机)访问远程数据库,对于单线程手工测试来说,可以直接通过CRT进行端口跳转访问,但是对于多线程并发访问时,各个线程都需要开启端口映射,此时CRT无法满足,借助于第三方插件,通过定制jmeter脚本,可以帮助我们实现测试目标。2工具/包2.1Apache-jmeterJmeter支持java语言,是一个开源的性能测试工具,通过扩展,可以实现非常丰富的功能,本讲义中的版本是2.11,jmeter的安装配置过程略2.2eclipse在eclipse中写javasample插件,eclipse的安装配置过程略2.3Com.jcraft.jsch一个开源的第三方JAR包,主要利用它来进行端口映射3插件开发3.1新建工程新建一个java工程,将下载下来的Com.jcraft.jsch源码导入,并新建一个package,用于编写javasample,结构如图所示。dT<Jpen_clos-e_SSH-出corrijcraftjschJ田5tart££HD[T|clo-seSSH.java[>[T|Constants.javaDElopenSSH.java巳JRESystemLibrary'JavaSE-1.6]-鼻ReferencedLib-raries3.2配置buildpath将%JMETER_HOME%\lib及%JMETER_HOME%\lib\ext导入Sfe forop>tn_ch«.S5HJlMfeB-liid加diJUfliR?anddawWdwonrhe-buidpatf*1鶯dJARs-AddFulBrnd」阴AdilSfe forop>tn_ch«.S5HJlMfeB-liid加diJUfliR?anddawWdwonrhe-buidpatf*1鶯dJARs-AddFulBrnd」阴Adil如Abid開dOanFoHbf...CaiKtl•n■»■nAddEsiartuilFdd«f._Re-stiurDeEdldan匚tivar■产」■血Euld耳由JanCockSftjl*JanCcEpil・rJair-ldcjfLor-Brienflrqjrrtfsctli-PreifrtRi^'DibugSeflingtServerTdskFrpS和卬TaskTagtTesriNCValidjboiApK-hpjMrtisr^nipansrtijjr-EMpschLjELlLrdiiXliHWitiip!K-h?.lM^!er_rarejar-fiapjdiC-jmrtfT-J.ll.yiti'rfffKllipschff.iM^prj^pjar-E-^Khe-imeier^llUib-^eit占口wheJM冋■rjpnctionij”-EMp«tie-jrn击r-21幼山'|.吐dpftcheJMeib.httpj”-EiSapscbeJme^T■ipftcIwJMflefJj-aj-ar-EMp*chfr-jniele*--2ll\lib\t-tAp*che-JM«t叮dbijai*-EMpAche^rrwierElTUIb'iE血叮imjar-E/'.^pacht-jmeber-ZLl\bb'i.c»c^pActwdMM«f_ldjp.jar-^p>ch«JMrivr_mjiLjHr■EAHpHdiB-j-rMMr-S.LLVfib*1^^m^pactwJMrivr.rTKngE-Jb.jjr-E;\jF・rh・・jrn*rb«rdLllhfiji伙▼^pacbvJMa^vri4电>@A@a4=■. ''"a'rm-ffrat-zrE^ar-E^ripacb*-jmBlHr»2.11*!|lib'^Hit^pscheJMrtBr.nffriw^Jar-E^pKhr,-jmr!lcri!-ii,iJib-,>fl<tApschflJMrtpr.FBpcirtjBr-E'>ap4d"K-jrnBlBr-S.lLMib'rfKllipsch^.lM^FrlX'pjsr-E;応口庶Z^Lon-nrjrne^oHc-d.Ldjjr-E^pwhe-jmftpr-J.liyfcbF-2iiiQjw-E-'fapacheirT-rttF-ZLU,ih泗-E^pache-jmrfef-aill'Jfeibshdienijdr-Es,i,apiKbc-Jmfu:f-2.11\IJij£«Y¥™n5-i:odei:-lj3ljar-E'lVdcheJmew-ZJJ.XGbci>ri7iQn5-cdltmofli-3.2丄理•E!'wach±^m«ber-ZLr\bbfDrtVYnnc-h-npchani-3丄»-E-'w^chA^irHbw-lLl\ibcomrYnnE-h-mJdiT-E:*ir^Kh«-jmaHr-Zll'Ulh!■■!•»!!- --,Jl-L-.-u-n■■■liL**5-sirsvIl^rPrajadn-•Lfari*lti;口;}Drd«rind3.3Constants类该类主要配置运行参数,例如数据库连接,用户名,数据库密码,端口号等,如果这些变量基本是不变的话可以写在Constants里。/*Constant.java*/packagestartSSH;publicclassConstants{staticfinalStringdriver="com.mysql.jdbc.Driver";staticfinalStringconnServer="jdbc:mysql://localhost:12306/";staticfinalStringdataBase="ccms_qinjiaoshou";staticfinalStringuserName="*******";staticfinalStringpassWord="*******";
staticfinalStringssh_server="******";staticfinalintssh_server_port=22;staticfinalStringssh_loginName="yang.yang";staticfinalStringssh_loginPassword="***********";staticfinalintlocal_port=12306;staticfinalintremote_port=3306;staticfinalStringremote_server="******";staticfinalStringZH_Encoding="?useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true";3.4openSSH类在openSSH中,定义了参数以及默认值,并开启端口转发,以及由于环境问题,这些参数并不是固定的,这种写死在代码中的方式就不灵活,JMETER提供了读取参数的方法,参见/*openSSH.java*/设H妁燃讣值设H妁燃讣值publicArgufl^riitsg^tDef5»uiltP^rameter$(){51Arguments-arg5二newArgur>ent5O;argsaddArgument(*lacaIport119'"loralfKirt*)jiirgsraddArgumpnt("remote_tcrver,!? "reflot电_■§ervei^,p);args卜addArgument('remote_port">'remote_porf)jargs-addArgument(-ssh_loginNans'打"5Eh_loginName,B)7^rg&-rddAj-gumGnt(・s&h_loginPas&wiord1!r"ssh_logiriiPa5s^ordargs卜addArgument("sshi_5erver",ssh_$€rv€r1');args-addArgument(-ssh_&erver_part11上-ssh_server_port,s)jreturnarg$.j}41如图a»±门冲■口环a»±门冲■口环i苑窖Uli皱皿piII卜l-jalpoftreffloii„6er^wramfffijKare*7K)taKfl:SEhJ^nHamG"E2h„loqlnhlafFri:■5h」[>gnF"3rtiwd■5hloglnFaMWin15-5hB?r*wMh5-W¥efE-EA&6fWWit3电 ~入口函数厂打开端口的人.口圈数*厂打开端口的人.口圈数*publicstaticvoidmain(Stringargs[J){ openSSHtest-new0|j&rSSH();Argumentsparams=test亡tD亡lav/aSamplerCoritextargO=newJavaSsmfjIer匚onte)d2(p白广amg);test.setupTFmt〔mrg。};test.runTest(日rg©);test.teardownT亡£t(arg0);入口函数是为了让jmeter找到对应的函数入口,见图J入口函数是为了让jmeter找到对应的函数入口,见图J抽■sit毅ifKiMkilRifi汕鸿GW islBtSSHjopaiSSHRiYbjlCJ>X1:■.^hIrwirf-lnrrvnnhInrinTl^rnF注意,端口应该作参数化处理,多个线程占用一个端口会出现连接失败的问题。一个SQL请求结束后,应释放该线程占用的端口资源,需要将该线程已占用的端口关闭。3.5closeSSH类该类主要用于释放线程占用的端口/*closeSSH.java*/入口函数:4344严关闭端□的人口函塾1V4S-publicstaticvoidmain(Strin吕gs|]}46{ clc&eSSHtest=me^close5SH();Argumentsparams=test.getDefa□ltParBRietEr5(};48 JavaSamplerCoirtExt日rgE-newJavaSamplerContExt(p日r■日mm)43 test.setupTestfargS^?lest»ruiiTestfargO};test-teardawnTest(arg0);52卫 }54}4连接测试4.1Jar包导出分别将项目导出为JAR包,导出2次,命名为openSSH.jar和closeSSH.jar,分别用于开启端口sample以及关闭关口sample囲Exportarg0rargfl)臼eJ&In口ccmsAutoT«tBefor^C0EXCUTE:•ccm^AutoTestL_fccm^AutoTe?t0401L_Jccm^AutoTestl口ccmsAutoT«tl22§j*~TccmsAutoTnthackj*~Tlesson;n口pen_close_Qpy_z口Sel&niumS口Sel&niumExamples.口£'vn£C3H]OCE13DPExpertresourcesintciaJARfileonthelocalfilesystem.CbhcbIiltParamvaSampltEPackageExplorerIS/JARfile,JavadocRunnableJARfie卜&JavaEEl-&PluginDevelopment白RemateSystemsI-白Run/De!bugSeledtBnexportde&tiriation:[typefifcrtsrtieral导出时注意选择对应的入口函数JARFileSpKirFicatJori|—:JARFileSpKirFicatJori|—:BCEmsAutoTtst孑乂.cla55pd^i團芯吕op&n_clofie_SSH®jt.prnjeci麼Expoftgeneratediiletandre^ewreesIExpoftalloutputfoldersforthe匚LedprojectsI?ExportJawasourcefilesandre^ouircesIExportrgrfactD<ing&forcheckedprcjects.£日址口帕i日£t£rin#£“JARfile:|JARfile:|匚::\U三已■rs^qinycjiigjijn'Dwktop'TgFgiSHjBrlBrowse-...Options13匚orripr«£thecontendoftheJARfileIAdddis'Mtoi^enliriesIOverwriteeastingfilesvfitheutwarningi口BackINertkFinish将2个jar文件以及mysqljdbcjar放到%JMETER_home%\lib\ext目录下,然后以admin身份运行jmeter。巴jApuKheJMd-l£仁•jjkp*cheJMd-lfi巴jApuKheJMd-l£仁•jjkp*cheJMd-lfit1£|j.js■fr-fr-/占工工T-lT-l<1<1<1VKE\J<J<1上]ApacheJMticr.ccimpQfleflHjaf上]ApachtJMticr_£ore.jaF上]Ap^chaJM^iflr.ltpjJi1■IApAch0JM»iar_lijnahnc.jQr«»|Ap*chBJMFlHr_lTttp;]jrIApirchaJMFlHrJVJBJJFi人F*ch・」詁ApKhflJMMBrjrnsjarApKhflJMMer■,lps<hipJMpiEr_Wapj3rXAp#chif.l^lFlEr_m3ilj3F,止Icfase^^Hja?2014/1^2(1IfliOOLaevuiJitJeJlvFit277[<B|上]nf^Eql-^c^inedurj&vA-5.L22-blnjurZD12./9.i'b2.71Ej^LiidtJe-JatFile-B14[<B®口皆应HJhfICWl/ZUlEiOdEj±diidtJe-JatFile-277KBZDIWM1E1ZDzniwwleiZQaniwwi3*2fianiwwi3*2fi2D1WM1H:262D1WM1H:262D1WM1H:262014/15/lfl1B;262014/15/lfl1B;26201dffi/lfl1H:26201d/6iilfllft:262ffiWWM)lft:262DAW10lfli262DAW10lfli262D1W1010(26aClj/b/lO16i2bEjKLn^tJe-JafFl#EjtcmntJeJarFl#tiKLiubl*JtvFibtiKLiubl*JtvFibEja-=LriaH-i丄・rFit*Eja-=LriaH-iAarFit*Eja-=LriaH-iAarFit*EieculBHe/rFl5EieculBHe/rFl5Fi^-ulaHe-Jfl-FitLifculab*JarFileLifculab*JarFileEwrutaHe-Ja*-fileEwrutaHe-Ja*-fileLwecLdjtJe-JatFitLweculJiNeFit4.2javasample在Jmeter中新建线程组,定义一个用户定义变量以保存随机端口号,新建javasample
GUA□+-J・Y■駅t»GUA□+-J・Y■駅t»■■:»■■»■/#^\・严十田-
一:;■:-_tXF=r:&岸:忙斗*口P!fl#跌话锲肚EWg.rP打晦护i 厂”."価ji曹由41 .: 该java请求用于打开端口,选择类名称,填入适当的参数,注意localport那一栏填写随机值。isa沁q童■叩测加严主耳isa沁q童■叩测加严主耳RfW鼻恋JL4/*琴谊二豪产PS加帕6»己4才fl■护口4#*现豪■匚乔・《!己斗.OflGCi«"iKtinW»fiLF-art*i4尸'.CflCReHE^■ftiMia至1用户宝文的变■洁:flPS.h-T:iitLLlHh£fc?Jd(Ln^mP^4.3sqlsample首先配置JDBC连接HITPCach«Mdnag&r!ond5):2JDBCCoAiteccianCanfi^ijrackMi存和 ►厨HO时卜ftihOri-K般元件►Wl-C走时器 ►Cul-VHITPCach«Mdnag&r!ond5):2JDBCCoAiteccianCanfi^ijrackMi存和 ►厨HO时卜ftihOri-K般元件►Wl-C走时器 ►Cul-V丽遥雅理嚣►i1DtipllCillB■Lol+finrti-C1ResetGun超噸器►Delete扌:祁...监UJ|器 ►HTTPCookiegEfiSiHTT¥总案它USSHTT疲权E催器HTTPiSr^认诲CSVLMtaSiBtLtMihi]FTPftW«filSaveNod^阳Im邨m-g£a*raScr%4inA-eIma
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版实习就业服务合同范本(2025年度)2篇
- 2025版大型养殖场与超市直供鲜蛋销售合同3篇
- 二零二五年计算机耗材及配件销售合同3篇
- 二零二五版婴幼儿奶粉电商平台销售合同模板页2
- 2025版学校教师培训与职称评定合作合同3篇
- 农业机械化与农业科技创新发展考核试卷
- 单板加工企业绿色生产与环保责任落实考核试卷
- 2025版塔吊租赁合同样板(安全与环保并重)3篇
- 2025年医疗耗材供应合同
- 矿长聘用合同二零二五年度执行范本(矿山行业适用)3篇
- 2023-2024学年度人教版一年级语文上册寒假作业
- 软件运维考核指标
- 空气动力学仿真技术:格子玻尔兹曼方法(LBM)简介
- 对表达方式进行选择与运用
- GB/T 18488-2024电动汽车用驱动电机系统
- 投资固定分红协议
- 高二物理题库及答案
- 职业发展展示园林
- 七年级下册英语单词默写表直接打印
- 2024版医疗安全不良事件培训讲稿
- 中学英语教学设计PPT完整全套教学课件
评论
0/150
提交评论