官网给出了一些注意事项:
当有一台Linux中存在某文件,可以通过scp命令将它拷贝到其他Linux机器,尤其是使用内网地址传输时,更显快速
scp -r <当前机器中待拷贝文件所在目录> root@<IP>:<目标机器中副本文件的存放目录(已存在)>
在分布式压测的准备工作中,可以使用该命令将jdk和jmeter复制到各slave机器中
有以下两种启动方式
可看到压测效果和日志
./jmeter-server
nohup ./jmeter-server &
检查是否启动成功
ps -ef|grep jmeter-server
ps aux|grep jmeter-server
[root@iZwz95j86y235aroi85ht0Z bin]# ./jmeter-server
Created remote object: UnicastServerRef2 [liveRef: [endpoint:[:39308](local),objID:[24e78a63:16243c70661:-7fff, 7492480871343944173]]]
Server failed to start: java.rmi.RemoteException: Cannot start. Unable to get local host IP address.; nested exception is:
java.net.UnknownHostException: iZwz95j86y235aroi85ht0Z: iZwz95j86y235aroi85ht0Z: Name or service not known
An error occurred: Cannot start. Unable to get local host IP address.; nested exception is:
java.net.UnknownHostException: iZwz95j86y235aroi85ht0Z: iZwz95j86y235aroi85ht0Z: Name or service not known
hostname 命令获取机器名称,追加一个映射:iZwz95j86y235aroi85ht0Z
vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
120.79.160.143 iZwz95j86y235aroi85ht0Z
windows用户 修改c:\windows\system32\drivers\etc\hosts文件,增加一条域名 与IP的映射
[root@iZwz95j86y235aroi85ht0Z bin]# ./jmeter-server
Server failed to start: java.rmi.server.ExportException: Listen failed on port: 0; nested exception is:
java.io.FileNotFoundException: rmi_keystore.jks (No such file or directory)
An error occurred: Listen failed on port: 0; nested exception is:
java.io.FileNotFoundException: rmi_keystore.jks (No such file or directory)
拥有RMI over SSL的有效密钥库,或者禁用了SSL
jmeter.property里面 server.rmi.ssl.disable 改为 true,表示禁用
[root@iZ949uw2xehZ bin]# ./jmeter
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c0000000, 1073741824, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 1073741824 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /usr/local/jmeter/apache-jmeter-4.0/bin/hs_err_pid5855.log
仅修改 server_port 即可,下面两者一样
我们要在多网卡的服务器上开启RMI服务的话必须指定IP,使他们能够在同一个网段内
需要以下几步(假定所有机器都在10.120.11.*网段,agent服务器为linux,controller服务器为windows)
# vi jmeter-server
按照以下步骤进行排查:
在Agent机器安装jdk,并设置环境变量
检查被控制机器上的jmeter-server有没有启动,或者remote_hosts的配置是否正确
编辑jmeter-server,设置固定的代理服务器主机IP
编辑Master的jmeter.bat,设置JMeter的自身启动IP为局域网IP
添加 set rmi_host=-Djava.rmi.server.hostname=<Master的局域网IP>
在 set ARGS 行末加上 %rmi_host%
不算问题,但也能让它显示
编辑Master的jmeter.properties,放开“mode=Standard”的注释并保存
重启JMeter后重试发现结果树中已显示返回值
只有Master需要改
remote_hosts=<Slave0Ip:Port>,<Slave1Ip:Port>,...
Master和各Slave都需要改
server.rmi.ssl.disable=true
注意:各 Slave 防火墙已关闭,且在同个网段,IP 地址用内网 IP
./jmeter-server
使用 -r 参数实现远程非 GUI 压测,可减少 CPU 和内存使用
jmeter -n -t <压测脚本文件名>.jmx -r -l <本不存在的结果文件名>.jtl -e -o <存放压测报告的空目录>