Load Runner:可以选择是以进程方式运行,或是线程方式来运行

JMeter:是以线程方式来运行的

  • 由于JMeter是运行在JVM虚拟机之上的,每个进程的开销比Load Runner的进程开销都要大,如果以进程的方式来运行的话,每台负载机上的进程数量就不会太多,当我们要大量并发时,就需要大量的负载机,这显然时不经济的,在则JAVA也是支持多线程的,所以JMeter选择了以线程方式来运行

JMeter运行:

  • JMeter通过线程组来驱动多个线程(类似LoadRunner中虚拟用户)运行测试脚本对被测服务器发起负载,每一个负载上都可以运行多个线程组,
  • JMeter运行场景不仅可以在GUI方式中完成,还可以使用命令行,而且命令行运行的方式对于负载机的资源消耗会更小

JMeter远程运行架构;JMeter支持远程运行

drawio 物理架构_测试脚本

  • 控制机:
  • 运行多台JMeter负载机进行性能测试时,被选中作为管理机的那台机器即是控制机。JMeter控制机也可以参与脚本的运行,同时他也担负着管理远程负载机指挥远程负载机运行的任务,并且收集远程负载机的测试结果
  • 负载机:
  • 向被测试应用服务器发起负载的机器,控制机同时也是一台负载机。
  • JMeter负载机受控制机(JMeter负载机)管理。与其他支持远程运行的测试工具一样,负载机受控制机管理首先要启动一个客户端程序(Agent:jmeter-service.bat),这样控制机才可以接管负载机。控制机会把运行的脚本隐蔽的发送到远程负载机,但是如果运行的测试脚本有参数文件及依赖的jar包时,控制机并不能把他们发送到远程负载机,这种情况就需要手动拷贝了,当然利用JMeter做性能测试自动换时可不能这样,可以利用工具来拷贝
  • 远程运行逻辑:
  • 远程负载机首先启动Agent程序,待控制机连接;
  • 控制机连接上远程负载机;
  • 控制机发送指令(脚本及启动命令)启动线程;
  • 负载机运行脚本,回传状态(包括测试结果);
  • 控制机收集结果并显示;