Tuesday, November 09, 2010 11:26 PM Mikael Sand

ASI401 – BTS Performance: Configuring BizTalk for performance

Presented by: Mikael Håkansson and Paolo Salvatori
Video here.

This is of course a session with an former colleague of mine; Mikael Håkansson, so I might be a bit biased.

Mikael and Paolo discussing a transformation issue. However I had the opportunity to talk with Paolo and Mikael before the presentation and I can’t really write what they were talking about because then Paolo will kill me, I think. However if I were a WF/BizTalk developer that wants to do transformations in WF, I would keep my eyes on Paolo’s blog.

The session

So if you haven’t seen this talk at the Swedish BizTalk user group (BUGS), I strongly encourage you to watch the video of this session at msteched.com. This subject is important and if you are planning to set up a new BizTalk environment or have the opportunity to test your current configuration, you really must watch this.

In the session Mikael demos the great and helpful tool; BizTalk Benchmark Wizard, but they also talk about the fact that tuning for performance is hard and progress does not come easily. So if you did something in the past to optimize BizTalk you should feel proud of yourself.

First of they showed how BizTalk is dependent on SQL for performance and that SQL is dependent of Storage for performance. To really make BizTalk run like the Hotrod it can be, you have to make all of these work together and that is not always the case as all three have different priorities. One slide quote that stood out was “the storage guy” that stated “I’ll let BizTalk share the disks with the SAP system”.

Mikael talking about an old moped

Cool things and hints

IMG_8407

There is now an SQL script that splits the MsgBoxDb into several different files. The point of this is to place these files on different disks and by doing that, performance increases. The script is available in the Performance Optimization Guide for BizTalk 2009. I think it might be on Paolo’s blog as well.

When processing messages in pipeline components do not use the XmlDocument class. This really is common knowledge by now but it is still worth repeating. I have seen what it can do to performance. Instead access the messages in a streaming fashion. BizTalk actually have some interesting predefined streams like NameSpaceTranslatorStream, that changes the target namespace of an incoming message, or XmlTranslatorStream that works well when transforming a message in the pipeline.

Some simple things for orchestrations: Define messages and variables at the lowest point possible. Use scopes and define the message only in scopes where it is needed, i.e. the lowest possible point. Another thing is to force certain persistence points by using Atomic scopes as these will persist only at the end of the scope, even if another point occurs (like a send message).

I personally would like to see Mikael hold more sessions at the Swedish BUGS as he is clear and very “to the point”. Paolo is much more “wordy” or “extensive”, depending on how you look at it, and this shows in his blog and in the way he is presenting. Overall they did a great job and if you are planning to upgrade your current environment or buy a new one; you have to see the video of this. It really is that simple.

Comments

No Comments