Jmeter对服务器进行压力测试
一、插件准备
下载地址:https://jmeter-plugins.org/downloads/all/
1、下载插件管理:
2、将管理插件放到jmeter/../ext文件夹中
3、在插件管理中搜索PerfMon(测试服务器的cpu等)
添加插件
host/ip设置为被测试服务器,就可以测试服务器的cpu、内存等
4、下载ServerAgent-2.2.1.zip
这里给一个百度盘链接http://pan.baidu.com/share/link?shareid=2974853586&uk=1528396991&fid=512652594025385
将下载的zip放到服务器上解压,如果是linux(需要jre环境),就进入serverAgent目录,运行startAgent.sh命令,如下:
启动:>>./startAgent.sh --udp-port 0 --tcp-port port(agent起来之后所监听的端口)
停止:>>./startAgent.sh --udp-port 0 --auto-shutdown
如果是windows环境:进入serverAgent目录,直接双击startAgent.bat,启动agent
注:agent启动默认监听的端口是4444
二、分布式准备
在使用Jmeter进行性能测试时,如果并发数比较大(比如5000+并发),单台电脑的配置(CPU和内存)可能无法支持,这时可以使用Jmeter提供的分布式测试的功能。
一、Jmeter分布式执行原理:
1、Jmeter分布式测试时,选择其中一台作为控制机(master),其它机器做为执行机(slaverr)。
2、执行时,master会把脚本发送到每台slaver上,slaver 拿到脚本后就开始执行,slaver执行时不需要启动GUI,如果引用到csv等外部的文件,则每台slaver所在的机器都需要相应位置放置该文件。
3、执行完成后,slaver会把结果回传给master,master会收集所有slaver的信息并汇总。
二、执行机(slaver)配置:
1、slaver机上需要安装Jmeter。
2、添加环境变量:JMETER_HOME=D:\B_TOOLS\apache-jmeter-2.13,此处为你Jmeter的路径。(这一步本人从来忽略依然不影响使用,关键在于每一台机器上都需要安装上java,因为jmeter就是java写的)
3、如果slaver是在windows下则直接启动bin目录下的:jmeter-server.bat;如果slaver是在liniux下则使用如下命令来启动:nohup ./jmeter-server -Djava.rmi.server.hostname=192.168.237.129 &,其中ip为slaver所在的机器的ip。
4、 需要配置多少台就按上面的方法配置多少台。
三、调度机(master)配置:
1、脚本:简单的一个访问百度的脚本:
2、找到Jmeter的bin目录下jmeter.properties文件,修改如下配置IP和Port是slaver机的IP以及默认的1099端口
remote_hosts=192.168.205.149:1099,192.168.205.150:1099,192.168.12.36:1099
3、选择远程启动-->远程全部启动:
四、自定义端口:
上面其实已经实现了Jmeter的分布式测试,这部分主要介绍下如何自定义slaver端口:(需要把前面#注释去掉)
1、slaver:在slaver机的Jmeter的bin目录下,找到jmeter.properties文件,修改如下两个配置项,比如我这里修改为1888:
server_port=1888
server.rmi.localport=1888
2、启动slaver机上的jmeter-server.bat,如下图,端口已经修改为:1888
3、master:修改master机器的jmeter.properties文件:
remote_hosts=10.13.223.202:1000,10.13.225.12:1888
五、注意:
1、控制机本身也可以作为一台slaver,在remote_hosts后面加上127.0.0.1即可,但控制机(master)和执行机(slaver)最好分开,由于master需要发送信息给slaver并且会接收slaver回传回来的测试数据,其自身会有较大消耗,所以建议单独用一台机器作为mater。
2、参数文件:如果使用csv进行参数化,那么需要把参数文件在每台slaver上拷一份且路径需要设置成一样的。
3、每台机器上安装的Jmeter版本和插件最好都一致,否则会出一些意外的问题。
4、最好master和slave都是一样的jmeter版本,jdk版本
六、报错:出现下面错误后,要检查
1、关闭所有防火墙
2、slave有时会有虚拟网卡,要禁用,ip诸如169.254.129.192之类的(我就是最后这一步)
3、如果本机也作为slave时,需要修改配置文件中的127.0.0.1为真正的ip地址,通过ipconfig查看
4、slave机器需要打开jmeter-server.bat