多节点JMeter分布式压测

Linux服务器上jmeter进行分布式压测的相关准备工作

1、压测注意事项
    the firewalls on the systems are turned off or correct ports are opened.
    系统上的防火墙被关闭或正确的端口被打开。

    all the clients are on the same subnet.
    所有的客户端都在同一个子网上。

    the server is in the same subnet, if 192.x.x.x or 10.x.x.x IP addresses are used. If the server doesn't use 192.xx or 10.xx IP address, there shouldn't be any problems.
    如果使用192.x.x.x或10.x.x.x IP地址,则服务器位于同一子网中。 如果服务器不使用192.xx或10.xx IP地址,则不应该有任何问题。

    Make sure JMeter can access the server.
    确保JMeter可以访问服务器。

    Make sure you use the same version of JMeter and Java on all the systems. Mixing versions will not work correctly.
    确保在所有系统上使用相同版本的JMeter和Java。 混合版本将无法正常工作。

    You have setup SSL for RMI or disabled it.
    您已为RMI设置SSL或将其禁用。

    官网地址 http://jmeter.apache.org/usermanual/jmeter_distributed_testing_step_by_step.html

    压测注意事项:一定要用内网IP,不用用公网IP,用ping去检查

2、专业名字
    master:司令
    slave:奴隶
    target:目标

地址:http://jmeter.apache.org/images/screenshots/distributed-names.svg
地址:http://jmeter.apache.org/images/screenshots/distributed-jmeter.svg

远程拷贝(内网地址):
    scp -r /usr/local/software/jdk-8u141-linux-x64.tar.gz root@172.18.230.233:/usr/local/software
    scp -r /usr/local/software/jmeter/apache-jmeter-4.0.tgz root@172.18.230.233:/usr/local/software/jmeter

启动 :  ./jmeter-server 或者    nohup ./jmeter-server &

检查启动是否成功
    ps -ef|grep jmeter-server
    ps aux|grep jmeter-server

 

 ./jmeter-server启动常见问题


1、问题
    [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(hostname 就可以得到)

        windows用户 修改c:\windows\system32\drivers\etc\hosts文件,增加一条域名 与IP的映射

2、问题:密钥
    [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。
           1、禁用SSL
               jmeter.property里面 server.rmi.ssl.disable 改为 true,表示禁用

3、问题:内存不够
            [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

    解决:
        编辑jmeter
        搜索 : "${HEAP:="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m"}"
        修改后:${HEAP:="-Xms124m -Xmx124m -XX:MaxMetaspaceSize=256m"}"   改变初始堆内存和最大堆内存


4、仅修改 server_port 即可,下面两者一样
    server.rmi.localport=8899 表示slave server启动显示的端口
    server_port=8899  表示master机器要远程连接的端口   即 remote_hosts=xxxx:8899

5、
    <!-- jmeter 分布式性能测试(多网卡配置) -->
    我们要在多网卡的服务器上开启RMI服务的话必须指定IP,使他们能够在同一个网段内。 

    需要以下几步(假定所有机器都在10.120.11.*网段,agent服务器为linux,controller服务器为windows):

    1、 修改agent服务器,指定agent机器的IP
    修改jmeter-server文件
    # vi jmeter-server
    修改RMI_HOST_DEF=-Djava.rmi.server.hostname=xxx.xxx.xxx.xxx(需要连接的IP)

    2、修改server服务器,指定server机器的IP

    修改jmeter.bat文件 

    新增set rmi_host=-Djava.rmi.server.hostname=10.120.11.214

    修改set ARGS=%DUMP% %HEAP% %NEW% %SURVIVOR% %TENURING% %PERM% %DDRAW% %rmi_host%


6、确定在controller机器上安装jdk,版本和jmeter一致,配置环境变量:Java_home等
   在Agent机器上安装jdk,配置环境变量:Java_home和JMeter_home
   安装目录不要带空格,最好都是简短的英文路径


7、master机器启动后会拷贝jmx文件到slave机器,所以不需要在每台slave机器上也上传一份jmx,只需要在master机器上上传一份jmx脚本即可。

    如果使用csv进行参数化,则需要把参数文件在每台slave上拷一份且路径需要设置成一样的。

    总样本数 = 线程数 * 循环次数 * 执行机总数


8、连接失败原因排查
    以下步骤进行排查:
        1. jmeter-server是否启动;
        2. 是否联网
        3. ping 服务器IP是否畅通.
        4. telnet 端口 192.168.3.10 1099
        5. 检查服务器的防火墙是否关闭。
        6. 阿里云安全策略是否正常

9、"could not find ApacheJmeter_core.jar"
    解决:在Agent机器安装jdk,并设置环境变量


10、”Bad call to remote host"
    解决:检查被控制机器上的jmeter-server有没有启动,或者remote_hosts的配置是否正确。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值