8.7. Stress Testing

Some bugs, by their very nature, are extremely difficult to detect, let alone determine their root cause. These types of bugs may include memory leaks, access violations, or race conditions. Often, they are aggravated by the multithreaded execution environment. Bugs of these types can go undiscovered for long periods of time. The code might work as expected until one day the bug shows up and the code stops working. Or a bug might be present for a period of time before anyone notices — perhaps an increase in system load means that the bug can suddenly not be tolerated.

While BizTalk tries to make it as easy as possible to avoid these problems when building your solution, there are plenty of opportunities to introduce issues such as these or even exercise a code path in the software stack where other previously undetected issues may be. To put memory leaks in server-side code into perspective, consider a piece of code that leaks 10 bytes of memory for every message. If your solution were processing 3 million messages a day, that would roughly translate to 30MB of memory leaked in a day. It would not take long before that leak pulled down the process. Race conditions can lead to all sorts of issues, ranging from access violations to incorrect or missing data.

While the CLR helps a great deal to protect you from a number of the issues that would be possible in a native code execution environment, it is no silver bullet for these types of issues. It is still relatively ...

Get Professional BizTalk® Server 2006 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.