views:

58

answers:

1

Hi
I am trying to profile a memory guzzling biztalk orchestration. This orchestration is using plenty of maps with a few custom script functoids.
I wish to identify the lifetime of the custom objects created by orchestration and how are they promoted in the Garbagage collection. Am not able to use the CLR profiler for the same.

Looking out for pointers to identify the objects that are getting promoted in the Garbage collection.

TIA Regards pari

+1  A: 

Hey Pari, here are a couple of things to try. The first, I have personally used the Ants Profiler on BizTalk processes before, here's a link: http://www.red-gate.com/supportcenter/Content.aspx?p=ANTS%20Profiler&c=knowledgebase%5CANTS%5FProfiler%5CKB200801000222.htm


Second, you can also do some spelunking with the Windows Perfmon, but it won't be as granular as the object level, but it will tell you if you are having troubles with promotions, the large heap, etc.

You should be able to get this information using Perfmon in Windows. The basic ones you are probably after are in the .NET CLR Memory object. Unfortunately you will have to add them for all of the BizTalk processes, as the naming convention does not allow you to see the host name here. You will see them listed here, and in the log, as BTSNTSvc, BTSNTSvc#1, BTSNTSvc#2, etc. It will take a little extra work to identify which one is the process you are interested in.

The counter that will allow you to identify the correct process is the the Process\ID Process counter, again for each BizTalk process. This will allow you to connect the PID from the process when it starts, to the PID in the Perfmon logs later.

The last step is to create a new host, if you haven't already, and isolate the orchestration to it. That way it is the only thing running in that BizTalk process. After that you can open up Windows Task Manager and view all of the BTSNTSvc.exe processes that are running. Start with the new process off, check the PIDs listed in Task Manager, and then turn on the new host. The new PID is the one assigned to the host you just turned on. Record the PID that the new process is generated with and use it to identify which process in the Permon logs you are interested in. Unfortunately you will have to repeat this step every time you want to take measurements.

One last thing to mention, when you turn your Perfmon log on it will only record the hosts that are on at the time. So you will want to turn it on after you turn the host with the orchestration on.


You may want to also check out the objects in the Biztalk:MessageAgent, as there are some good memory counters in there for BizTalk with the actual names associated with them. It's not as granular as what you are looking for.

I have also heard of an orchestration profiler, but I have never used it. You might give it a shot: http://www.codeplex.com/BiztalkOrcProfiler

Andrew Dunaway
Totally, off topic, but I could not for the life of me get that Ants link to show up correctly. If anyone knows how to do it, and has sufficient edit privileges, could you fix that so I can see how it's done? I tried all the approaches I could find.
Andrew Dunaway
Bart Read
Thanks Bart, that worked great. I didn't even see the '\' character in there. Guess I wasn't paying attention. I actually copy/pasted the URL directly from my browser, so I never considered the possibility of a bad character.
Andrew Dunaway
Thanks andrew. I have tried the perfmons and the orch profiler as well. The profiler is an extremely useful tool. The perfmons do help but needs lot of corelations with other parameters. I shall take a look at the ants profiler and check
Paritosh