Performance of a publisher connecting to an EMS server goes down when both the publisher and subscribers are simultaneously running.

Performance of a publisher connecting to an EMS server goes down when both the publisher and subscribers are simultaneously running.

book

Article ID: KB0085357

calendar_today

Updated On:

Products Versions
TIBCO Enterprise Message Service -
Not Applicable -

Description

Resolution:
Description:
==========

Test Case:

1).  Start a new EMS server with local file based stores.

2).  Use the tibjmsMsgProducerPerf.java on the same machine to send 1800 PERSISTENT messages to a queue (without any special property and associated with the default store $sys.nonfailsafe) each of 10 kb size in 6 threads. Assume throughput is 12000 msgs/sec .

3).  Start a consumer (tibjmsMsgConsumerPerf.java with 5 threads) on the queue (with CLIENT_ACK ack mode). When the consumer is running, the producing rate with the same producer with the same settings comes down to 7000 msgs/sec.

4).  When you decrease the number of threads in the consumer to 1, the producing rate is almost the same as when there is no consumer (around 10K-11K msgs/sec).

Assumed final readings for the publishing rate:

1).  When there is no consumer: 12765 messages/second.

2).  When there is 1 consumer: 11538 messages/second.

3).  When there are 2 consumers: 10465 messages/second.

4).  When there are 3 consumers: 9625 messages/second.

5).  When there are 4 consumers: 7659 messages/second.

6).  When there are 10 consumers: 6259 messages/second.

7).  When there are 20 consumers: 5000 messages/second.

8).  When there are 50 consumers: 4265 messages/second.

Environment:
===========

All H/W and O/S
TIBCO Enterprise Message Service – All versions

Symptoms:
========

Publishing rate gradually slows down when the number of consumers increases.

Cause:
=====

When the consumer is running and the producer is producing messages, the EMS server has to write ACK records (these are small records the EMS server writes to the disk after a message is received by the consumer) to the file system/database. When there is a consumer, there is additional disk I/O involved as well as the expected disk I/O to write the messages to the disk. However, when the consumer is not running, the additional overhead for writing ACK_RECORDs to the file system/database is not involved. If you increase the number of consumers, the overhead to write ACK records for each consumer also increases. That affects the producing rate.


Resolution:
=========

This is expected behavior and is by design.

Issue/Introduction

Performance of a publisher connecting to an EMS server goes down when both the publisher and subscribers are simultaneously running.