这篇文章其实很简单,就是为下一篇文章做一个铺垫,所以宏哥给小伙伴或童鞋们提前热身一下。
远程执行,就是脚本放在本地,执行却在另一台电脑上执行,当然,可以是远程多台电脑一起执行。最常见的场景就是,跑性能测试的时候,一台电脑负载不起需要的线程时,就需要两台或者更多的电脑来启动线程跑测试,线程就相当于是虚拟用户。在网上,通常会说,超过 1000 个线程时,就不要使用一台电脑跑了,而是选择使用多台电脑一起负载。这个说法并不全对,比如,脚本就写一条 insert 语句,往数据库中插入数据,启 20 个线程跑,估计你的电脑 CPU 使用率就要 100% 了。所以,最终还是要看电脑承受得住否,而不是看多少个线程,不同的测试脚本,对测试机的压力不一样。很多时候,做性能测试的时候,为了模拟真实的用户操作,都会加等待时间。比如用户登录功能,用户在输入用户名和密码的时候,这个时候,服务器就是在等待,所以脚本在这里就会加一个等待时间。
Jmeter 是 Java 应用,对于 CPU 和内存的消耗比较大,因此,当需要模拟数以千计的并发用户时,使用单台机器模拟所有的并发用户就有些力不从心,甚至会引起 JAVA 内存溢出错误。其实,Jmeter 的远程启动可以帮助我们解决此问题,通过单个 jmeter 客户端控制多个远程的 jmeter 服务器,使它们同步的对服务器进行压力测试。
宏哥的本地环境,如下:
Jmeter 版本:5.1.1,如下图所示:
系统:Windows 10 版本 64 位系统(32 位的同学自己想办法哦),如下图所示:
宏哥的远程环境,如下:
Jmeter 版本:5.1.1,如下图所示:
系统:Windows 10 版本 64 位系统(32 位的同学自己想办法哦),如下图所示:
分别在本地和远程机器上安装 jmeter,这里宏哥就不做详细介绍了,不知道的同学可以参考宏哥的这篇安装文章:https://www.cnblogs.com/du-hong/p/12894560.html。
本地机器:Jmeter 安装路径的 bin 下,编辑 jmeter.properties 文件,追加如下内容:
#Jmeter 远程启动:Controller 机配置,格式为:“IP1:port1,IP2:port2”,如下只配置了一台 Agent;
remote_hosts=*.*.*.95:1029
远程机器:Jmeter 安装路径的 bin 下,编辑 jmeter.properties 文件,追加如下内容:
#Jmeter 远程启动:Agent 机配置
server_port=1029
server.rmi.localport=1029
备注:若出现端口被占用,Windows 上在 dos 框输入 “netstat -ano”,查看端口使用情况,这里推荐使用新的端口;
宏哥为了演示,简单的录制了一个访问度娘的脚本文件,如下图所示:
①本地机器:“运行”→“远程启动”,可以看到宏哥配置的远程机器的 IP 及端口,如下所示,选择这台机器;
②远程机器:
Jmeter 安装在 Windows 平台上:cmd 到 dos 中,进入 Jmeter 安装路径的 bin 目录下,执行 “jmeter-server”
③查看本地结果树,如下图:
④查看远程 cmd 到 dos 中,进入 Jmeter 安装路径的 bin 目录下,执行 “jmeter-server” 的窗口,如下图所示:
至此,远程启动执行完毕。
1、jmeter 安装在 Linux 平台上:进入 Jmeter 安装路径的 bin 目录下,执行 “./jmeter-server”;
否则会报如下错误:“Java.net.ConnectionException: Connection refused:connect”
2、同理如果 Jmeter 安装在 Linux 平台上:进入 Jmeter 安装路径的 bin 目录下,执行 “./jmeter-server”;
否则会报如下错误:“Java.net.ConnectionException: Connection refused:connect”
3、Jmeter5.2.1,启动报错java.io.FileNotFoundException: rmi_keystore.jks
jmeter.properties
中,设置server.rmi.ssl.disable=true
原因:jmeter4.0 以上的版本,默认启用 RMI 连接的安全通信,需要创建密钥库。所以将 SSL 禁用即可。create-rmi-keystore.bat
(Windows 适用)或create-rmi-keystore.sh
(Linux 适用)