Setting the EPM Threadpool Size
This topic explains how to set the threadpool size for the End Point Manager (EPM).
On the Advanced tab in the Host Properties dialog box, there is a property called Maximum number of messaging engine threads per CPU. For instructions about how to access this dialog box, see "How to Create a New Host" in BizTalk Server 2006 R2 Help at http://go.microsoft.com/fwlink/?LinkID=100422. Use this property to control the size of the pool of process threads that the BizTalk Messaging Engine uses to process messages. The default value for this property is 20. This means that the BizTalk Messaging Engine will use no more than 20 threads for each CPU on the server.
Since batches of messages are processed by each thread in the pool, adjusting the value of Maximum number of messaging engine threads per CPU can affect performance by changing the dynamics of resource use on the server. For more information about how the threadpool works, see "Using the BizTalk Messaging Engine" in BizTalk Server R2 Help at http://go.microsoft.com/fwlink/?LinkId=106779.
Tests show that when the CPU or the SQL Server is over used, decreasing the value of Maximum number of messaging engine threads per CPU can result in increased throughput. For example, if the MessageBox database server exhibits CPU use above 90% or the SQL lock wait times are elevated above 500-1000 milliseconds, reducing the number of threads in the pool reduces the overall number connections made to SQL Server. This results in more efficient message processing. In some cases, setting the maximum thread pool size to a value as low as 2 can result in measurable throughput gain.
When optimizing your BizTalk Server installation, it is recommended that you fine tune the value you set for Maximum number of messaging engine threads per CPU. If you try to reduce the use of the MessageBox database server, consider reducing the value of this property.
When the BizTalk Server or the MessageBox database server is not highly used, and applying additional load does not result in additional throughput, try increasing the value of Maximum number of messaging engine threads per CPU to take advantage of underusedresources.