--sm-threads-pool

Artur Hefczyc <artur.hefczyc@tigase.net> v2.0, June 2014: Reformatted for AsciiDoc. :toc: :numbered: :website: http://tigase.net/ :Date: 2013-02-10 01:06

Default value: default

Example: --sm-threads-pool = custom:100

Possible values: default|custom:NN

Description: The property allows you to fine-tune the SM plugins (processors) thread pool. With the default settings every plugin gets his own thread pool. This guarantees the best performance and optimal resource usage. The downside of this setting is that packets can arrive out of order if they are processed within a different thread pools.

If you really need or want to preserve the order for packets processed by different plugins then the solution is to use the custom thread pool. In such a case packets processed by all plugins are handled within a single thread pool. This guarantees that the packets are processed and delivered in the exact order they arrive. The number after the colon : specifies the thread pool size.

What about fine-tuning then? Yes, there is an option to fine tune this even further. Let’s say you want most of the plugins to be executed within a single thread pool to preserve packet ordering for them, but some, selected plugins can/should execute within separate, own thread pools to improve performance. Let’s say, authentication packets and user registration can be actually executed in a separate thread pools as we do not worry about an order for them. User cannot send or receive anything else before he authenticates anyway. The solution is to specify number of threads for selected plugins in the --sm-plugins property as described above. For example, setting a common thread pool for all plugins but registration and authentication can be done with following configuration:

--sm-threads-pool=custom:100
--sm-plugins=jabber:iq:register=8,jabber:iq:auth=16,urn:ietf:params:xml:ns:xmpp-sasl=16

Available since: 5.1.0