How to Avoid Disk Contention
BizTalk Server is designed as a persistent system. For high throughput scenarios, the MessageBox and BizTalk Tracking databases can experience severe contention. This contention can be aggravated by slow disks. If the disks are slow (greater than 15ms on average for Avg. Disk sec/Read or Avg. Disk sec/Write), it may cause SQL Server to hold onto locks longer (high Lock Wait Time and high Lock Timeouts). This, in turn, can cause the MessageBox tables (Spool and Application Queues) to grow, causing database bloat and throttling. This situation ultimately results in lower overall sustainable throughput.
Note
For information about identifying if a server has a disk bottleneck, see Windows Performance Monitor (https://go.microsoft.com/fwlink/?LinkID=204007). Windows Performance Monitor is a Microsoft Management Console (MMC) snap-in that provides tools for analyzing system performance.
To avoid disk contention, do the following:
Steps | Reference |
---|---|
Use Raid10/0+1 disk configurations. | Best Practices for Avoiding Bottlenecks |
If possible, deploy the databases on a high-speed SAN. If multiple databases are sharing the same disks, we recommend configuring them on separate dedicated disks. In addition, we recommend separating the MDF and LDF files for the MessageBox database onto separate disks. | Optimizing Filegroups for the Databases2 |
Consider allocating multiple files for the TEMPDB database, as this will significantly reduce disk contention and spread the load across multiple data files. | Pre-Configuration Database Optimizations2 |
Consider separating the MessageBox database onto a dedicated server that is separate from the BizTalk Tracking databases. | Post-Configuration Database Optimizations2 |
Assign the MSDTC log file directory to a separate dedicated drive. | Optimizing Operating System Performance |
If there is contention on the local drive due to the PageFile or MSDTC log, try moving the PageFile and/or the MSDTC log to a separate drive. | Best Practices for Avoiding Bottlenecks |
Optimize the Tracking database for write operations. | How to Identify Bottlenecks in the Tracking Database |
Optimize the MessageBox database for read and write operations. | How to Identify Bottlenecks in the MessageBox Database1 |
If a BizTalk host instance is saturating the CPU, consider separating sending, receiving, processing, and tracking functionality into multiple hosts. This configures the system so that the orchestration functionality runs on a separate dedicated server to improve overall system throughput. | Optimizing BizTalk Server Performance |
If multiple orchestrations are deployed, consider enlisting them in different dedicated orchestration hosts. This isolates the different orchestrations and prevents contention for shared resources either in the same physical address space or on the same server. | Optimizing BizTalk Server Performance |
Consider using Windows Performance Monitor to diagnose disk contention issues.. | Windows Performance Monitor |
For more information about disk performance analysis, see the following resources:
“I/O Bottlenecks” section of Troubleshooting Performance Problems in SQL Server 2008.