The number of running orchestrations increases and then remains constant after you reach the thread pool limit, and orchestration execution time may increase in BizTalk Server (900455)



The information in this article applies to:

  • Microsoft BizTalk Server 2006 Developer Edition
  • Microsoft BizTalk Server 2006 Enterprise Edition
  • Microsoft BizTalk Server 2006 Standard Edition
  • Microsoft BizTalk Server 2004 Standard Edition
  • Microsoft BizTalk Server 2004 Partner Edition
  • Microsoft BizTalk Server 2004 Enterprise Edition
  • Microsoft BizTalk Server 2004 Developer Edition

Important This article contains information about how to modify the registry. Make sure to back up the registry before you modify it. Make sure that you know how to restore the registry if a problem occurs. For more information about how to back up, restore, and modify the registry, click the following article number to view the article in the Microsoft Knowledge Base:

256986 Description of the Microsoft Windows registry

SYMPTOMS

Consider the following scenario. In Microsoft BizTalk Server 2006 or in Microsoft BizTalk Server 2004, your orchestrations are nondehydrating. You monitor the number of running orchestrations by using the Running Orchestrations performance counter in the XLANG/S Orchestrations performance object in Performance Monitor. You may notice that the number of running orchestrations increases and then remains constant after you reach the thread pool limit. This number remains constant until the orchestration load decreases. When this behavior occurs, orchestration execution time may increase.

In BizTalk Server, orchestrations typically contain dehydration points that enable the recycling of threads back to the thread pool. The default size of the thread pool is not designed for a solution in which you must have many nondehydrating orchestrations running at the same time.

RESOLUTION

Warning Serious problems might occur if you modify the registry incorrectly by using Registry Editor or by using another method. These problems might require that you reinstall your operating system. Microsoft cannot guarantee that these problems can be solved. Modify the registry at your own risk.

To resolve this behavior, first examine your orchestration design to see whether you can avoid the nondehydrating nature. If you cannot avoid the nondehydrating nature, change the default maximum worker threads that are available for the BizTalk Server host instance. There are valid orchestrations that must run for a long time without any valid dehydration points. For example, you may have an orchestration that features Expression shapes, and these Expression shapes make long-lived calls to an external component.

To change the default maximum worker threads, add the MaxWorkerThreads DWORD registry entry. To do this, follow these steps:
  1. Click Start, click Run, type regedit, and then click OK.
  2. Locate and then click the following registry subkey:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTSSvc{GUID}

    Note In this registry subkey, GUID is a GUID of the in-process BizTalk Server host that you want to change. You can examine the following registry entry to make sure that the correct host is modified:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTSSvc{GUID}\DisplayName



    Note In BizTalk Server 2006, locate and then click the following registry key:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTSSvc$hostname]

    In this registry key, hostname is the name of the host that is associated with the host instance.

    Note If the CLR Hosting key already exists, go to step 5.
  3. On the Edit menu, click New, and then click Key.
  4. Type CLR Hosting, and then press ENTER.
  5. Locate and then click the following registry subkey:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTSSvc{Guid}\CLR Hosting

  6. On the Edit menu, click New, and then click DWORD Value.
  7. Type MaxWorkerThreads, and then press ENTER.
  8. Right-click MaxWorkerThreads, and then click Modify.
  9. In the Edit DWORD Value dialog box, click Decimal, type the new value, and then click OK.

    Note The default value for MaxWorkerThreads is 25. The new value will depend upon the current number of Running Orchestrations that you view in Performance Monitor. An ideal value enables the maximum number of orchestrations that are running at the same to be serviced. However, an ideal value avoids introducing resource contention or excessive context switching into the solution.
  10. On the File menu, click Exit.

Modification Type:MajorLast Reviewed:8/23/2006
Keywords:kbbiztalk2004-2006swept kbinfo kbtshoot kbprb KB900455 kbAudDeveloper kbAudITPRO