zoukankan      html  css  js  c++  java
  • JMeter分布式压测

    在使用Jmeter进行性能测试时,如果并发数比较大时候,单机受限内存、CPU、网络IO,会出现服务器压力还没有上去,压测服务器已经由于模拟的压力太大变的很卡甚至死机,这时可以使用Jmeter提供的分布式测试的功能。

    一、Jmeter分布式执行原理:

      1、Jmeter分布式测试时,选择其中一台作为调度机(master),其它机器做为执行机(slave)。

      2、执行时,master会把脚本发送到每台slave上,slave 拿到脚本后就开始执行,slave执行时不需要启动GUI,它应该是通过命令行模式执行的。

      3、执行完成后,slave会把结果回传给master,master会收集所有slave的信息并汇总。

    二、分布式压测环境部署

    前提:

    1、最好保证master和所有slave机器上的jmeter的版本相同

    2、需要保证master和slave都在一个网络中,且在多网卡环境需要保证启动的网卡都在一个网段

    3、如果windows系统作为master,Linux系统的服务器作为slave,还要注意master和slave的防火墙是否已经关闭,Linux系统的服务器关闭防火墙命令:

    • systemctl stop firewalld
    • systemctl status firewalld
    • systemctl disable firewalld
    • systemctl enable firewalld

    步骤:

    现在我的环境是master机器是windows机,一台slave机器是Linux系统机器。

    1、master机器,打开jmeter/bin/jmeter.properties,找到”remote_hosts=127.0.0.1”,把这一行修改为”remote_hosts=127.0.0.1,47.92.67.190(当有多个slave时,各个slave的ip中间用“,”分隔),

    把默认的RMI端口号改成任意的值。

    2、slave机器自定义端口号

    进入Jmeter的bin目录,找到jmeter.properties文件,打开该文件修改如下两个配置项,比如修改端口号为:9870(默认端口号为:1099)

    server_port=9870

    server.rmi.localport=9870

    运行jmeter-server文件,查看端口是否修改成功

    3、slave机器jmeter jvm调优

    为了掠尽所有执行机的硬件和网络资源,加强执行机的发压能力,还需要对每台执行机进行深度jmeter jvm调优(修改jmeter.bat中jmeter的内存参数,从512m调整为合适大小)

    set HEAP=-Xms512m -Xmx4000m
    set NEW=-XX:NewSize=256m -XX:MaxNewSize=512m

    根据经验,堆值(HEAP)最多设置为物理内存的一半,默认设置为512m,如果堆值(HEAP)超过物理内存的一半,JMeter运行速度会变慢,设置会出现“内存溢出”的错误。

    4、master机器上运行脚本,查看测试结果

    运行->远程启动,选择要执行脚本的slave的机器

    查看测试结果:

    三、一些注意事项:

    1、调度机(master)和执行机(slave)最好分开,由于master需要发送信息给slave并且会接收slave回传回来的测试数据,所以mater自身会有消耗,所以建议单独用一台机器作为mater

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

    3、每台机器上安装的Jmeter版本和插件最好都一致,否则会出一些意外的问题

    4、遇到执行失败时,可以查看调度机(master)和执行机(slave)上的Jmeter-server.log中的报错信息

    比如:

    参考:

    https://blog.csdn.net/lt326030434/article/details/81065848(jmeter分布式报错java.rmi.ConnectException: Connection refused to host:xxx的解决办法)

  • 相关阅读:
    【288】◀▶ 博客园黑色代码主题实现
    【287】◀▶ arcpy 常用类说明
    【286】◀▶ Python 内置函数说明
    LeetCode Insert Interval
    Craking the coding interview 面试题:完美随机洗牌
    遭遇多线程bug (1)
    全情投入是做好工作的基础——Leo鉴书39
    《Java 并发编程实战》读书笔记之二:图文讲述同步的另一个重要功能:内存可见性
    视图控制器
    Chapter 1. OpenGL基础回顾
  • 原文地址:https://www.cnblogs.com/ailiailan/p/11519485.html
Copyright © 2011-2022 走看看