JMeter 分布式负载

JMeter 是一个100%的纯 JAVA 应用,对机器 CPU 和内存的消耗比较大,在用 JMeter 做并发测试、负载测试、压力测试等时,模拟的用户数以千计,使用单台机器模拟所有用户会有些力不从心,甚至会引起JAVA内存溢出。

1、JMeter 分布式负载原理

这时,我们可以使用 JMeter 的分布式负载(也叫联机负载)功能,通过单个 JMeter 控制机(Controller)控制多个远程的 JMeter 负载机(Agent),使它们同步对服务器进行性能测试。

首先来看一下控制机和负载机的作用:

控制机(Controller):存放 JMeter 脚本的机器,负责在开始运行前把脚本发送到各个负载机,在运行后回收和统计各个负载机的运行结果。

负载机(Agent):被控制用来运行脚本的机器,负责产生负载。

2、配置负载机(Agent)

了解了控制机和负载机的作用后,接下来学习如何配置负载机。

  1. 负载机上安装和配置 JDK 环境变量,JDK 版本建议和控制机的保持一致,避免因版本不一致导致出现其他的问题;

  2. 负载机上配置 JMeter 环境,版本也建议和控制机保持一致;

  3. 启动负载机 JMeter bin 目录下的 jmeter-server.bat 文件;

    如果你使用的是4.0版本 JMeter ,在启动 jmeter-server.bat 文件时会出现上面的错误提示。这个是因为 JMeter 在4.0版本中,RMI的默认传输机制将使用SSL,SSL需要密钥和证书才能工作 。

    解决这个问题的方式有2种,可以生成 jks 格式的密钥文件,另外也可以去修改负载机 JMeter bin目录下的 jmeter.properties 配置文件。在这里,我们只学习修改配置文件的方式。

    修改配置文件只需要将 server.rmi.ssl.disable=false 改成 server.rmi.ssl.disable=true,然后重新启动 jmeter-server.bat 文件即可。

  4. 把运行过程中使用的测试数据文件和外部jar包等复制到负载机相同的目录下,测试脚本则不需要,运行前控制机会自动把测试脚本发送到负载机。

    所有的负载机能否用同一份数据取决于系统的业务,如果数据要保持唯一性(如注册),那么各个负载机的数据不能用同一份,如果数据没有唯一性(如登录),那么可以用同一份。

3、配置控制机(Controller)

在控制机 JMeter bin目录下的 jmeter.properties 配置文件中找到 remote_hosts=......,设置远程负载机的 IP 和端口(默认1099,如要修改该端口需要在负载机配置文件中修改 server_port=xxx)。多个负载机之间用逗号隔开,如192.168.1.30:1099,192.168.1.44:1099。修改配置文件后切记重启 JMeter,否则修改的配置不生效。

重启 JMeter 后,在选择菜单运行(run) 的远程启动(remote start) 中启动负载机,可以逐个负载机运行,也可以全部一起运行。

启动后,控制机会自动把测试的脚本发送到各个负载机上,每个负载机接收到的脚本都是一样的。每个负载机的虚拟用户数等于控制机中配置的线程数N,所以服务器最终承受的用户数是:负载机数量 X 线程数N。

注意:

控制机如果无法连接负载机,在这里补充几种常见的坑。

  1. 网络不相通。互相 ping 一下看控制机和负载机网络是否相通,不相通则检查网络,确保控制机和负载机在同一网络环境。

  2. 连接被拦截。检查是否开启了杀毒软件或者防火墙,如果开启了就关闭再重新连接。

  3. 检查是否安装有 vm 虚拟机或将某个盘设置了共享权限。控制机在配置该负载机时,除 IP 地址外,虚拟机 IP 或者共享盘 IP 也会出现在远程连接待选列表中,连接时报错。

    vm 虚拟机

    这个时候可以关闭虚拟机服务或撤销盘符共享。

    停止vm服务
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,580评论 18 139
  • 在使用Jmeter进行接口的性能测试时,由于Jmeter 是JAVA应用,对于CPU和内存的消耗比较大,所以,当需...
    燕京博士阅读 4,158评论 0 16
  • Jmeter 是java 应用,对于CPU和内存的消耗比较大,因此,当需要模拟数以千计的并发用户时,使用单台机器模...
    宇文臭臭阅读 1,268评论 0 0
  • 若不是回家时电视里播的新闻已忘记几年前9月11日发生的事在我看来,死去的那些人们是一些无法选择的殉道者 战争、冲突...
    Zerohated阅读 248评论 0 0
  • 放学,看了儿子写的作业,字歪歪扭扭的,好像十级大风刮过一样,看来字练的还是不行啊,继续努力吧
    高誉恒阅读 158评论 0 0