Question

I'm a BizTalk newbie, and recently ran into some issue where the biztalk orchestration get stuck and i'm forced to restart host instance to get the message processing again.

What i found weird is by doing a test, i can see that the biztalk host instance in task manager takes up a lot of memory and doesn't release them even after the orchestration goes into dehydrated mode.

Is it due to some bad programming that i'm doing in my biztalk orchestration?

FYI my orchestration uses a utility DLL that calls WCF to retrieve data from SQL Server 2008 R2.

Orchestration are programmed with a timer utility to exit after four hours of non operation.

Setup: FYI, i'm using biztalk 2009, in windows server 2008 r2, 24GB of memory, intel xeon processor.

Updates:

Well you guys are right, as expected!

Restarting the host instances doesn't really help with the issue and as of now i still don't have any idea what's wrong with it.

I've did a debug diagnostic run to get the memory dump and i believe the memory is being consumed by the schemas and other parts of the biztalk application so i think it's probably fine.

I did stumble upon a long list of cumulative updates and trying to see which one that i need to install to resolve this issue.

Thanks!

Was it helpful?

Solution

Performing all of your Wcf and SQL calls inside .Net helper code is definitely not best practice, and neither is regularly re-starting your host instances.

Is there any way you can re-factor your code to use the out-of-the-box adapters? Failing that, try using a memory profiler to see where your memory leak lies.

OTHER TIPS

I wouldn't think that Biztalk needs restarting daily.

I would ensure that all resources in your DLL are cleaned up/disposed appropriately. And then do some measurments in test to see if it's not your code that's putting load on the server.

You shouldn't restart BizTalk host instances on a daily basis, BizTalk is an enterprise product and normally used in mission critical applications.

When you say lot of memory what does it mean? By default the throttling setting for BizTalk host instance process memory consumption is 25% of the available system memory. So if your server have 32GB memory, BizTalk server will assume it's safe to go upto 8GB consumption before applying any throttling conditions.

You can use Process Monitor (http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx) to dig deep into BizTalk host instance and see where your memory is consumed. In my experience it will always result in some custom code. Take a look into your custom DLL and see if they are using techniques like XmlDocument to load a big document to parse certain values.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top