zoukankan      html  css  js  c++  java
  • 【转】使用JMeter 完成常用的压力测试(三)

    使用JMeter 完成常用的压力测试

    字体:        | 上一篇 下一篇 | 打印  | 我要投稿 

    JMS服务器

      MOM 作为消息数据交换的平台,也是影响应用执行效率的潜在环节。在 Java 程序中,是通过 JMS 与 MOM 进行交互的。作为 Java 实现的压力测试工具,JMeter 也能使用 JMS  对应用的消息交换和相关的数据处理能力进行测试。这一点应该不难理解,因为在整个测试过程中,JMeter  测试的重点应该是消息的产生者和消费者的本身能力,而不是 MOM本身。

      根据 JMS 规范,消息交换有2种方式:发布/订阅和点对点。JMeter针对这两种情形,分别提供了不同的Sampler进行支持。以下MOM我们使用ActiveMQ 3.2.1,分别描述这两种消息交换方式是如何使用 JMeter 进行测试。

    1. 测试前的准备(两种情况都适用)

      JMeter 虽然能使用 JMS 对 MOM  进行测试,但是它本身并没有提供JMS需要使用的包。因此,在测试之前需要将这些包复制到 %JMETER_HOME%/lib 下。对于  ActiveMQ 来说,就是复制 %ACTIVEMQ_HOME%/lib。%ACTIVEMQ_HOME%/optional  是可选包,可根据实际情况来考虑是否复制。

      JMeter 在测试时使用了 JNDI,为了提供 JNDI 提供者的信息,需要提供  jndi.properties。同时需要将 jndi.properties 放到 JMeter 的 classpath 中,建议将它与  bin下的 ApacheJMeter.jar 打包在一起。对于 ActiveMQ,jndi.properties 的示例内容如下:

    java.naming.factory.initial = org.activemq.jndi.ActiveMQInitialContextFactory java.naming.provider.url = tcp://localhost:61616

    #指定connectionFactory的jndi名字,多个名字之间可以逗号分隔。 #以下为例:  #对于topic,使用(TopicConnectionFactory)context.lookup("connectionFactry")  #对于queue,(QueueConnectionFactory)context.lookup("connectionFactory")  connectionFactoryNames = connectionFactory

    #注册queue,格式: #queue.[jndiName] = [physicalName]  #使用时:(Queue)context.lookup("jndiName"),此处是MyQueue queue.MyQueue =  example.MyQueue

    #注册topic,格式: # topic.[jndiName] = [physicalName]  #使用时:(Topic)context.lookup("jndiName"),此处是MyTopic topic.MyTopic =  example.MyTopic  

    2. 发布/订阅

      在实际测试时,发布者和订阅者并不是需要同时出现的。例如,有时我们可能想测试单位时间内消息发布者的消息产生量,此时就不需要消息发布者,只需要订阅者就可以了。本例为了说明这两种Sampler的使用,因此建立如下的测试计划:

      

      其中JMS Publisher和JMS  Subscriber的属性:选择"使用jndi.properties",连接工厂是connectionFactory,主题是MyTopic,其它  使用默认配置。对于JMS Publisher,还需提供测试用的文本消息。

       启动ActiveMQ,运行测试计划。如果配置正确,那么与ActiveMQ成功连接之后,在JMeter的后台会打印出相关信息。在测试过程  中,JMeter 后台打印可能会出现java.lang.InterruptedException  信息,这个是正常现象,不会影响测试过程和结果。这一点可以从 bin 下的 jmeter.log 看出。

    3. 点对点

      对于点对点,JMeter只提供了一种Sampler:JMS Point-to-Point。在例子中,建立如下图的测试计划:

      

      其中:Communication style是Request Only。对于另一种风格:Request Response,会验证收到消息的JMS Header中的JMSCorrelationID,以判断是否是对请求消息的响应。

    结论

       本文介绍了如何使用JMeter完成最常用的三种类型服务器的压力测试,这三种类型的压力测试涵盖了很大一部分的使用情形,然而需要记住的是工具毕竟是工  具。效果好不好,关键还是在于使用的人。而且,对于压力测试,测试计划的好坏是关键。针对不同的情况,分析后有针对的进行测试,比起拿枪乱打、无的放矢显  然要高效得多。

  • 相关阅读:
    初级算法
    初级算法
    LeetCode刷题
    win32
    Hexo
    网络上收集的C++常见面试题
    Direct2D CreateBitmap的使用
    hdu4560 不错的建图,二分最大流
    hdu4560 不错的建图,二分最大流
    poj1182 and 携程预赛2第一题 带权并查集
  • 原文地址:https://www.cnblogs.com/blongfree/p/4981023.html
Copyright © 2011-2022 走看看