High Quality Enterprise Messaging.

SwiftMQ Performance Profile

Test Environment

  • AMD Quad-Core 1385, 2.7 GHz, 512 KB cache, 5799.74 bogomips
  • 8 GB RAM
  • 160 GB Intel SSD X-25M
  • Linux 2.6.18 SMP X86_64
  • JDK 1.6.0_21 64-Bit
  • SwiftMQ 8.1.0 with Network NIO Swiftlet 8.1.0 installed
  • JVM settings for SwiftMQ Router and client were "-server -Xmx1024M".
  • SwiftMQ Router and client were running on this machine.

Tests performed

  • Point to point tests were performed as pairs where a pair consists of 1 producer and 1 consumer, communicating over 1 dedicated queue.
  • Publish/subscribe tests were performed as 1-to-n tests over a single topic where n is the number of subscribers.
  • JMS Session modes used: non-transacted/auto-ack, non-transacted/client-ack (ack after each 10 messages), transacted (commit after each 10 messages)
  • 1 KB BytesMessage were used for all tests.

For persistent messages the tests were performed with disk cache disabled and disk sync enabled (most reliable option) and also with disk cache enabled and disk sync disabled (less reliable).

Configuration for disk cache disabled and disk sync enabled:

  • disk cache disabled with: hdparm -W 0 /dev/sda3
  • transaction log disk sync enabled with: force-sync="true"
  • thread pool "jms.connection", max-threads="1"
  • thread pool "jms.session", max-threads="100"
  • Network NIO Swiftlet: number-selector-tasks="1" use-direct-buffers="true"

Configuration for disk cache enabled and disk sync disabled:

  • disk cache enabled with: hdparm -W 1 /dev/sda3
  • transaction log disk sync disabled with: force-sync="false"
  • thread pool "jms.connection", max-threads="1"
  • thread pool "jms.session", max-threads="100"
  • Network NIO Swiftlet: number-selector-tasks="1" use-direct-buffers="true"

Configuration for tests with non-persistent messages:

  • thread pool "jms.connection", max-threads="1"
  • thread pool "jms.session", max-threads="1"
  • Network NIO Swiftlet: number-selector-tasks="1" use-direct-buffers="true"

Duplicate message detection were disabled for all queues, related queue controllers and the JMS client.

Test Results: Disk Cache DISABLED, Disk Sync ENABLED

Point to Point, persistent

Pairs SwiftMQ 8.0.0 auto-ack SwiftMQ 8.1.0 auto-ack SwiftMQ 8.0.0 client-ack SwiftMQ 8.1.0 client-ack SwiftMQ 8.0.0 transacted SwiftMQ 8.1.0 transacted
1 138 480 138 778 224 772
10 531 2700 503 3750 652 3707
50 887 7100 845 9250 936 8915

Publish/Subscribe, durable, persistent

Subscribers SwiftMQ 8.0.0 auto-ack SwiftMQ 8.1.0 auto-ack SwiftMQ 8.0.0 client-ack SwiftMQ 8.1.0 client-ack SwiftMQ 8.0.0 transacted SwiftMQ 8.1.0 transacted
1 138 463 138 775 226 764
10 176 2600 213 5865 241 5940
50 181 8900 232 17426 240 17460
100 181 10575 235 19471 239 20423

Test Results: Disk Cache ENABLED, Disk Sync DISABLED

Point to Point, persistent

Pairs SwiftMQ 8.0.0 auto-ack SwiftMQ 8.1.0 auto-ack SwiftMQ 8.0.0 client-ack SwiftMQ 8.1.0 client-ack SwiftMQ 8.0.0 transacted SwiftMQ 8.1.0 transacted
1 6214 8192 5624 7773 5705 7192
10 11203 13621 10739 12695 12187 13815
50 10877 13782 10422 13587 12044 13758

Publish/Subscribe, durable, persistent

Subscribers SwiftMQ 8.0.0 auto-ack SwiftMQ 8.1.0 auto-ack SwiftMQ 8.0.0 client-ack SwiftMQ 8.1.0 client-ack SwiftMQ 8.0.0 transacted SwiftMQ 8.1.0 transacted
1 5625 7034 5246 6769 5785 6440
10 11595 30539 10246 28148 11365 28149
50 12938 38673 11214 37776 12548 35363
100 12618 37977 10992 35217 12206 33803

Test Results: Non-persistent Messages

Point to Point, non-persistent

Pairs SwiftMQ 8.0.0 auto-ack SwiftMQ 8.1.0 auto-ack
1 32362 35124
10 93580 98270
50 89748 90184

Publish/Subscribe, non-durable, non-persistent

Subscribers SwiftMQ 8.0.0 auto-ack SwiftMQ 8.1.0 auto-ack
1 47573 57994
10 200360 249557
50 190497 256860
100 165467 251996