Nastel has a free download available here called AutoPilot MQSpeedtest for IBM MQ. The purpose of the MQSpeedtest utility is to measure various times related to queue manager message flow. Much like traditional sonar technology, this is completed by sending a ping which is picked up by the target and echoed back. By measuring the time spent it can determine various characteristics of the message path. In IBM MQ terms, it sends messages to a listening application which replies with a response to those messages. MQSpeedtest captures various times along the message path as well as the round-trip times.

By default, the echo application can be the IBM MQ Command Server but, for users that do not have administrative permission to use this, Nastel also provide a Speedtest echo application.

The following are some basic configurations that can be implemented using MQSpeedtest:

Single queue manager:

  • determine if the queue manager is up and responding
  • determine standard throughput for a (set of) queues
  • compare the behavior of different queue configurations such as using persistent versus non-persistent messages.

Multiple queue managers:

  • Identify slowdowns in inter-queue manager communication
  • Identify queue managers that contribute to delays
  • Identify differences in behaviours of different queue managers
  • Verify that a path from one sending application to the receiving application is properly configured.

These diagrams show the configurations that I have tested so far. There are also multi-hop options that I will try in the future.

To test the single queue manager scenario, I ran the following from a Windows command console as an administrator:

mqsonar SYSTEM.ADMIN.COMMAND.QUEUE QMA

It gave the following output:

Pinging QMA(SYSTEM.ADMIN.COMMAND.QUEUE) using 36 byte 10(msgs) batch....
Statistics for queue QMA(SYSTEM.ADMIN.COMMAND.QUEUE) :
Summary Performance Indicators :
        MINIMUM_ROUND_TRIP       (0.0250 sec/msg)
        MAXIMUM_ROUND_TRIP       (0.0280 sec/msg)
        AVERAGE_ROUND_TRIP       (0.0266 sec/msg)
        AVERAGE_PROPAGATION_TIME (0.0240 sec/msg)
        AVERAGE_REFLECTION_TIME  (0.0026 sec/msg)
        MESSAGES_SENT            (10)
        CONFIRMED_EXPIRIES       (0)
        CONFIRMED_DELIVERIES     (0)
        CONFIRMED_ARRIVALS       (0)
        CONFIRMED_EXCEPTIONS     (0)
        REPORTS_RECEIVED         (0)
        RESPONSES_RECEIVED       (10)
        MESSAGES_RECEIVED        (10)
        BYTES_SENT               (360)
        BYTES_RECEIVED           (360)
        RESPONSE_REQUEST_RATIO   (100.0000%)

General Performance Indicators :
        TOTAL_PUT_TIME           (0.0000 sec)
        TOTAL_GET_TIME           (0.0280 sec)
        AVERAGE_PUT_RATE         (10000.0000 msg/sec [360000.00 bytes/sec])
        AVERAGE_GET_RATE         (357.1429 msg/sec [12857.14 bytes/sec])
        PUT_GET_RATE_RATIO       (2800.0000% [28.00])

Message Performance Indicators :
        GROSS_ROUND_TRIP_RATE    (714.2857 msg/sec [25714.29 bytes/sec])
        EFFECTIVE_ROUND_TRIP_RATE(714.2857 msg/sec)
        CONFIRMATION_OVERHEAD    (0.0000% [0.00])
        AVERAGE_ARRIVAL_RATE     (0.0000 msg/sec])
        AVERAGE_DELIVERY_RATE    (0.0000 msg/sec])
        AVERAGE_MSG_LATENCY      (0.0000 sec]) WITH QDEPTH(0)
        MAXIMUM_MSG_LATENCY      (0.0000 sec]) WITH QDEPTH(10)

        TOTAL_BATCH_TIME         (0.1630 sec)
        TEST_COMPLETION_CODE     (0)

Pinging QMA(SYSTEM.ADMIN.COMMAND.QUEUE) completed with RC(0)

To test the two queue manager scenario, I ran the following from a Windows command console as an administrator:

mqsonar RTOQMBPCF QMA

which gave the following output:

Pinging QMA(RTOQMBPCF) using 36 byte 10(msgs) batch....

Statistics for queue QMA(RTOQMBPCF) :

Summary Performance Indicators :
        MINIMUM_ROUND_TRIP       (0.0000 sec/msg)
        MAXIMUM_ROUND_TRIP       (0.0030 sec/msg)
        AVERAGE_ROUND_TRIP       (0.0015 sec/msg)
        AVERAGE_PROPAGATION_TIME (0.0000 sec/msg)
        AVERAGE_REFLECTION_TIME  (0.0025 sec/msg)
        MESSAGES_SENT            (10)
        CONFIRMED_EXPIRIES       (0)
        CONFIRMED_DELIVERIES     (0)
        CONFIRMED_ARRIVALS       (0)
        CONFIRMED_EXCEPTIONS     (0)
        REPORTS_RECEIVED         (0)
        RESPONSES_RECEIVED       (10)
        MESSAGES_RECEIVED        (10)
        BYTES_SENT               (360)
        BYTES_RECEIVED           (360)
        RESPONSE_REQUEST_RATIO   (100.0000%)

General Performance Indicators :
        TOTAL_PUT_TIME           (0.0010 sec)
        TOTAL_GET_TIME           (0.0040 sec)
        AVERAGE_PUT_RATE         (10000.0000 msg/sec [360000.00 bytes/sec])
        AVERAGE_GET_RATE         (2500.0000 msg/sec [90000.00 bytes/sec])
        PUT_GET_RATE_RATIO       (400.0000% [4.00])

Message Performance Indicators :
        GROSS_ROUND_TRIP_RATE    (4000.0000 msg/sec [144000.00 bytes/sec])
        EFFECTIVE_ROUND_TRIP_RATE(4000.0000 msg/sec)
        CONFIRMATION_OVERHEAD    (0.0000% [0.00])
        AVERAGE_ARRIVAL_RATE     (0.0000 msg/sec])
        AVERAGE_DELIVERY_RATE    (0.0000 msg/sec])
        AVERAGE_MSG_LATENCY      (0.0000 sec]) WITH QDEPTH(0)
        MAXIMUM_MSG_LATENCY      (0.0000 sec]) WITH QDEPTH(10)

        TOTAL_BATCH_TIME         (0.0380 sec)
        TEST_COMPLETION_CODE     (0)

Pinging QMA(RTOQMBPCF) completed with RC(0)

Many other options are also available. It can run as a client too.

MQSpeedtest statistics can be captured in a CSV file and used to produce a spreadsheet of historical data. For example, you can capture data on a daily basis, and append the results to an existing file each day.

Example parameters:

1. -fmqsonar.csv

Writes a header and a single result line to msqsonar.csv.

2. -fmqsonar.csv -a

Appends only a result line to mqsonar.csv.

3. -fmqsonar.csv -a -d60

Appends a header and a result line every 60 seconds to msqsonar.csv.

You can import this file into Excel or other spreadsheet to produce charts such as the figure below.

The tool can also be integrated with Nastel’s AutoPilot and XRay products for real time availability monitoring and historical trend analysis.


If you would like to see the original blog, click here