When using TIBCO EMS (Enterprise Messaging Service), performance always remains the top priority of solution architects and developers. Tuning the performance of EMS server is one key challenge which needs thorough analysis and focus in order to ensure efficient performance of TIBCO engines in production environments.
In this post, I am going to explain some tips and tricks for tuning TIBCO EMS performance.
TIBCO EMS Message Delivery Mode Selection:
While developing EMS based applications in TIBCO, you can opt for Persistent, Non-Persistent or Reliable message delivery mode. Selection of a delivery mode that best meets your application needs is of key significance. From performance point of view, RELIABLE message delivery mode is the most optimal choice as in this case there is no additional network traffic of confirmation messages from the EMS server to the message producer.
If messages being sent by the producer are critical in nature and confirmation from the server is must required; decision needs to be taken between selection of PERSISTENT and NON-PERSISTEN message delivery modes. Persistent delivery mode stores/persists the message to a physical storage on EM Server side which may also result in a performance degradation depending on the storage media specifications. If persistence is also a must requirements, selection of solid state high speed storage media should be preferred to ensure faster persistence.
Queues/Topics Bridges on EMS Server:
Bridging between multiple queues and topics on a EMS Server is made to propagate the messages being received by EM Server. Use of large number of bridges between queues and topics on EMS Server can greatly serve the purpose but it can also result in performance degradation. Bridges should be created only when they are of a prime need.
Setting Thread Affinity on EMS Server:
Performance of TIBCO EMS Server can also be tuned and throughput can be increased by proper utilization of available server cores. Some specific cores can be dedicated to network traffic to ensure that all messages sent by the producers to the EMS server are received and placed in the queues/topics in an efficient manner.
Processor_id parameter in the EMS Configuration file can be used to achive thread affinity.
Increasing Network Thread Count for EMS Server:
Another way to improve performance of TIBCO EMS server without adding any additional cores is to use network_thread_count configuration parameter in tibemsd.conf file. This parameter should be set to ensure maximum utilization of the EMS Server cores to achieve optimal throughput.
EMS Cores Selection:
For machines with multiple cores, EMS Server should be running on those cores which are dedicated to its functionality and there should not be any OS level jobs or processes scheduled on these cores.