**********************负载机安装JMETER,服务器安装监控脚本***********************
前提:Jmeter官网Apache JMeter - Apache JMeter™下载安装包,由于我是在windows的eclipse写java测试脚本,然后使用window下的Jmeter生成在linux下可执行的脚本,然后再在linux下使用Jmeter跑此可执行脚本,然后在windows下查看测试及监控结果,因此需要将Jmeter安装包分别拷贝在windows目录和linux目录下
1、window下解压在某个目录,直接点击bin目录下的jmeter.bat就可以打开window的jemter界面客户端了,如下:
2、linux解压在负载机的/opt目录下,测试时Jmeter可能会内存溢出,因此可以通过创建setenv.sh修改配置,由于我机器的内存为125G,因此可以调大一些
****************************eclipse编写java测试脚本并导出Jar包********************
1、新建java project,新建lib包,将jmeter安装包目录${installDir}/lib/ext/下的ApacheJMeter_core.jar和ApacheJMeter_java.jar拷贝到lib包下面,右键工程名->Build Path然后进入到Libraries页下,点击Add JARs即可
2、编写的测试脚本需要继承AbstractJavaSamplerClient,测试脚本其中一个样例如下:
3、测试脚本编写完成后,右键工程名->export->JAR file将导出的jar包放到windows下jmeter安装目录${installDir}/lib/ext/下,并放在linux中的${installDir}/lib/ext/下,如果只需要修改代码逻辑,只需要更新此jar包就可以,不需要更新jmx了
******************************************window下使用Jmeter生成在linux下可执行的jmx脚本**************
1、点击Jmeter.bat打开客户端界面,右键TestPlan->Add->Threads(Users)->ThreadGroup,添加线程组
备注:(1)Number of Threads(users):此处填写需要开的线程数
(2)Ramp-Up Period(in seconds):此处填写规定在多长时间内启动所有线程
(3)Loop Count:此处勾选Forver的优先级大于后面长方框中的数字,即循环多少次,java测试脚本中getDefaultParameters函数不会循环执行,setupTest、runTest函数会迭代执行
(4)Scheduler+Duration(seconds):此处指定测试脚本需要执行多长时间,单位为秒
2、由于是测试服务器,测试脚本为java,右键ThreadGroup->Add->Sampler->Java Request,添加java请求
3、由于你已经将写好的java测试脚本放到windows下的Jmeter安装目录下的ext目录下,此时界面中的Classname会自动加载类名,选择你要跑的脚本的类名
4、添加监控:在需要添加监控的项目如线程组上右键->Add->Listener->jp@gc-PerfMon Metrics Collector可以监控cpu、disks i/o、memory、network i/o等;
点击AddRow,Servers to Monitor会增加一行,在Host/IP中填写要监控的服务器IP地址,Metric to collect填写要监控的资源,Filename后长方框内填写要生成的监控报告的地址,比如我写的是/opt/...jtl
同理可添加聚集报告及填写聚集报告生成的目录
5、点击File->Save Test Plan as会出现一个界面,将jmx执行脚本保存在windows下Jmeter的bin目录下,然后通过Xftp将此执行脚本放到linux下Jmeter的bin目录下
******************************************linux下执行jmx脚本******************
1、linux执行如下命令,即可跑起来测试脚本,之后再指定报告生成的目录下查看报告即可
*******************性能测试过程中的调试**************************
1、首先我使用最多的工具就是top,我主要用它来查看cpu、memory
2、dstat
注意:不要忘记将export的整个脚本放在jemter下面
全文索引一些查询语句:
1、查询ES集群中所有的全文索引: curl -XGET 'http://192.168.28.143:9600/_cat/indices?v'
2、删除全文索引curl –XDELETE ‘192.168.30.63:9200/indexname’
2、查询ES集群中所有的记录: curl -XGET 'http://192.168.28.143:9600/_search?pretty'
3、查询ES集群中每个type的最后一条: curl -XGET 'http://192.168.28.143:9600/_search?q=_id:SDBCOMMIT'
4、查询ES集群中某个全文索引的记录: curl -H 'Content-Type: application/json' -XGET 'http://192.168.28.143:9600/indexName/_search?pretty' -d '{"query":{"match":{"a":"a"}, "match":{"b":"b"}}}'
5、删除所有全文索引curl –XDELETE ‘192.168.30.63:9200/_all’