JMeter 使用

来源:互联网 发布:opencv python 掩膜 编辑:程序博客网 时间:2024/05/22 14:36
    最近公司对框架进行了测试,在测试的过程中,客户机报了“内存异常”,跟老郑聊天的时候,老郑说修改内存 征用同事的电脑进行分布式并发应该能解决“内存异常”的问题。今天到公司,我就迫不急的的扒在电脑上进行查找,google真好,想要的全部找到了,“偷来备用”现在总结如下:

调整内存设置

    在运行jmeter.bat时(在Linux环境下,我们使用jmeter.sh文件来运行)可能出现jmeter无法正常运行的现象。我们可以在DOS 模式下运行jmeter命令来查看问题所在。如果显示图中问题,则说明jmeter.bat文件中内存设置大小需要调整。
调整方法:打开jmeter.bat文件,修改HEAP值以符合当前环境要求。
修改如下设置
set HEAP=-Xms512m -Xmx512m

JMeter分布式测试

    Jmeter 是java 应用,对于CPU和内存的消耗比较大,因此,当需要模拟数以千计的并发用户时,使用单台机器模拟所有的并发用户就有些力不从心,甚至会引起JAVA内存溢出错误。为了让jmeter工具提供更大的负载能力,jmeter短小精悍一有了使用多台机器同时产生负载的机制。

    那么,是如何实现多台负载机同时运行的呢?当然不会多个人坐在多台负载机面前,一喊开始,大家同时启动jmeter。这种方式很笨,也很难达到真正的同步。其实,我们通过单个jmeter 客户端就可以控制多个远程的jmeter服务器,使它们同步的对服务器进行压力测试。

    通过远程运行jmeter,测试人员可以跨越多台低端计算机复制测试,这样就可以模拟一个比较大的服务器压力,一个jmeter客户端实例,理论上可以控制任意多的远程jmeter实例,并通过他们收集测试数据。这样一样,就有了如下特性:
  • 保存测试采样数据到本地机器
  • 通过单台机器管理多个jmeter执行引擎。
  • 没有必要将测试计划复制到每一台机器,jmeter GUI客户端会将它发往每一台jmeter服务器。
  • 每一台jmeter远程服务器都执行相同的测试计划,jmeter不会在执行期间做负载均衡,每一台服务器都会完整地运行测试计划。
    在1.4G Hz~3GHz 的CPU 、1GB 内存的 JMeter 客户端上,可以处理线程 100~300。但是Web Service 例外。XML处理是 CPU 运算密集的,会迅速消耗掉所有的CPU 。一般来说,以XML技术为核心的应用系统,其性能将是普通Web 应用的 10%~25% 。另外,如果所有负载由一台机器产生,网卡和交换机端口都可能产生瓶颈,所以一个JMeter 客户端线程数不应超过 10 0 。 
采用JMeter 远程模式并不会比独立运行相同数目的非GUI 测试更耗费资源。但是,如果使用大量的JMeter 远程服务器,可能会导致客户端过载,或者网络连接发生拥塞。
使用多台机器产生负载的操作步骤如下:
  1. 在所有期望运行jmeter作为 负载生成器的机器上安装jmeter, 并确定其中一台机器作为 controller ,其他的的机器作为agent 。然后运行所有 agent 机器上的JMeter-server.bat文件(假定使用两台机器192.168.0.100 和192.168.0.101 作为agent,Agent机器上必须安装jdk,并设置环境变量)
  2. 在controller机器的jmeter的bin目录下,找到jmeter.properties 文件,编辑该文件:
    查找:remote_hosts=
    将原有的
    # Remote Hosts - comma delimited
    remote_hosts=127.0.0.1
    #remote_hosts=localhost:1099,localhost:2010
    修改为:
    # Remote Hosts - comma delimited
    remote_hosts=192.168.0.100,192.168.0.101
    #remote_hosts=192.168.0.100:1099,192.168.0.101:1099

  3. 这里要特别注意端口后,有些资料说明端口1644为jmeter的controller 和agent 之间进行通信的默认RMI端口号,但是在测试时发现,设置为1644运行不成功,改成1099后运行通过。另外还要留意agent的机子是否开启了防火墙等。
  4. 启动controller 机子上的jmeter应用,选择菜单“运行”--->“远程启动”,来分别启动agent ,也可以直接选择“远程全部启动”来将所有的agent启动。

原创粉丝点击