TIBCO EMS Performance Tuning Tips and Tricks

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.

TIBCO EMS Routing is another important considerations. You can refer to TIBCO EMS Routing Tutorial where I have explained in detail how you can crate an EMS route.


Ajmal Abbasi

Ajmal Hussain Abbasi is Integration Consultant By Profession with 12+ years experience in Integration domain mainly with TIBCO products. He has extensive practical knowledge of TIBCO Business Works, TIBCO Cloud, TIBCO Flogo, TIBCO Mashery, TIBCO Spotfire, EMS and TIBCO ActiveSpaces. He has worked on a number of highly critical integration projects in various sectors by using his skills in TIBCO Flogo, TIBCO API Management (Mashery), TCI, Tibco Designer, TIBCO Business Studio, Adapters, TIBCO EMS, RV, Administrator, TIBCO BE, TIBCO ActiveSpaces etc. Ajmal Abbasi has experience with MuleSoft ESB as well. Ajmal Abbasi is also experienced in the area of API Management particularly with WSO2 API management platforms. Ajmal Abbasi is also experienced in developing solutions using Core Java and J2EE Technologies. You can contact Ajmal Abbasi for Consultancy, Technical Assistance and Technical Discussions.

More Posts - Website - Facebook - LinkedIn - YouTube

One thought on “TIBCO EMS Performance Tuning Tips and Tricks

  1. kiran kumar kondapally


    Iam not able to see any parameter(network_thread_count) in tibemsd.conf file.
    Is it different file or do we need to create this parameter in that file?



Leave a Reply

Your email address will not be published. Required fields are marked *