May 2005 - Posts

Biztalk Error Codes

You can lookup your Biztalk Error codes using this tool ,You can look at this tool from inside VS.NET .

Download it form Got Dot Net here

Once you unzip the tool . You can open up your VStudio->Tools ->ExternalTools and Add this Exe and give a descriptive name like "Biztalk Error Code Lookup"
So next time you get an Error , It is right there

Monitoring Biztalk performance

Biztalk applications have now become matured enough and are now getting scrutinized for performance. Often this scrutinizing of results in capturing some key performance counters and you will eventually chose a set of counters to measure and run your tests. But often on later analysis you realize that you missed capturing certain key counters . So what is a good subset to be captured. The counters below offers a good start as any

Biztalk Box General

\\BTSBOX\.NET CLR Exceptions(_Global_)\*
\\BTSBOX\.NET CLR Memory(_Global_)\# Bytes in all Heaps
\\BTSBOX\.NET CLR Memory(_Global_)\# GC Handles
\\BTSBOX\.NET CLR Memory(_Global_)\# Gen 0 Collections
\\BTSBOX\.NET CLR Memory(_Global_)\# Gen 1 Collections
\\BTSBOX\.NET CLR Memory(_Global_)\# Gen 2 Collections
\\BTSBOX\.NET CLR Memory(_Global_)\# Total committed Bytes
\\BTSBOX\.NET CLR Memory(_Global_)\# Total reserved Bytes
\\BTSBOX\.NET CLR Memory(_Global_)\% Time in GC
\\BTSBOX\.NET CLR Memory(_Global_)\Allocated Bytes/sec
\\BTSBOX\.NET CLR Memory(_Global_)\Gen 0 heap size
\\BTSBOX\.NET CLR Memory(_Global_)\Gen 1 heap size
\\BTSBOX\.NET CLR Memory(_Global_)\Gen 2 heap size
\\BTSBOX\.NET CLR Memory(_Global_)\Large Object Heap size
\\BTSBOX\ASP.NET Applications(_LM_w3svc_1_ROOT_BTARNApp)\Anonymous Requests/Sec
\\BTSBOX\ASP.NET Applications(_LM_w3svc_1_ROOT_BTARNApp)\Requests In Application Queue
\\BTSBOX\ASP.NET Applications(_LM_w3svc_1_ROOT_BTARNApp)\Requests Total
\\BTSBOX\ASP.NET Applications(_LM_w3svc_1_ROOT_BTARNApp)\Requests/Sec
\\BTSBOX\BizTalk:Messaging(*)\*

Memory

\\BTSBOX\Memory\Available MBytes
\\BTSBOX\Memory\Available MBytes
\\BTSBOX\Memory\Committed Bytes

DISK

\\BTSBOX\PhysicalDisk(_Total)\% Disk Time
\\BTSBOX\PhysicalDisk(_Total)\% Idle Time

PROCESS
\\BTSBOX\Process(BTSNTSvc#1)\Handle Count
\\BTSBOX\Process(BTSNTSvc#1)\ID Process
\\BTSBOX\Process(BTSNTSvc#1)\Private Bytes
\\BTSBOX\Process(BTSNTSvc#1)\Thread Count
\\BTSBOX\Process(BTSNTSvc#2)\Handle Count
\\BTSBOX\Process(BTSNTSvc#2)\ID Process
\\BTSBOX\Process(BTSNTSvc#2)\Private Bytes
\\BTSBOX\Process(BTSNTSvc#2)\Thread Count
\\BTSBOX\Process(BTSNTSvc#3)\Handle Count
\\BTSBOX\Process(BTSNTSvc#3)\ID Process
\\BTSBOX\Process(BTSNTSvc#3)\Private Bytes
\\BTSBOX\Process(BTSNTSvc#3)\Thread Count
\\BTSBOX\Process(BTSNTSvc#4)\ID Process
\\BTSBOX\Process(BTSNTSvc#4)\Private Bytes
\\BTSBOX\Process(BTSNTSvc#5)\ID Process
\\BTSBOX\Process(BTSNTSvc#5)\Private Bytes
\\BTSBOX\Process(BTSNTSvc)\% Processor Time
\\BTSBOX\Process(BTSNTSvc)\Handle Count
\\BTSBOX\Process(BTSNTSvc)\Handle Count
\\BTSBOX\Process(BTSNTSvc)\ID Process
\\BTSBOX\Process(BTSNTSvc)\ID Process
\\BTSBOX\Process(BTSNTSvc)\Private Bytes
\\BTSBOX\Process(BTSNTSvc)\Private Bytes
\\BTSBOX\Process(BTSNTSvc)\Thread Count
\\BTSBOX\Process(BTSNTSvc)\Virtual Bytes
\\BTSBOX\Process(w3wp#1)\Private Bytes
\\BTSBOX\Process(w3wp)\ID Process
\\BTSBOX\Process(w3wp)\Private Bytes

\\BTSBOX\Processor(_Total)\% Processor Time
\\SQLBOX\PhysicalDisk(_Total)\% Disk Time
\\SQLBOX\PhysicalDisk(_Total)\% Idle Time
\\SQLBOX\PhysicalDisk(2 D:)\% Disk Time
\\SQLBOX\PhysicalDisk(2 D:)\% Idle Time
\\SQLBOX\PhysicalDisk(2 D:)\Avg. Disk Queue Length
\\SQLBOX\PhysicalDisk(2 D:)\Disk Read Bytes/sec
\\SQLBOX\PhysicalDisk(2 D:)\Disk Write Bytes/sec
\\SQLBOX\Processor(_Total)\% Processor Time


\\SQLBOX\SQLServer:General Statistics\User Connections
\\SQLBOX\SQLServer:Locks(_Total)\Average Wait Time (ms)
\\SQLBOX\SQLServer:Locks(_Total)\Lock Requests/sec
\\SQLBOX\SQLServer:Locks(_Total)\Lock Timeouts/sec
\\SQLBOX\SQLServer:Locks(_Total)\Lock Wait Time (ms)
\\SQLBOX\SQLServer:Locks(_Total)\Lock Waits/sec
\\SQLBOX\SQLServer:Locks(_Total)\Number of Deadlocks/sec



I am sure the list is quite extensive but will give you a good start on what to monitor or not monitor

TDDS is processing the same data or there is an orphaned session in SQL

A recommended Biztalk best practice for performance is to have a separate Tracking Host . So when you add a separate Tracking host , you might encounter this scenario


Event Type: Error
Event Source: BAM EventBus Service
Event Category: None
Event ID: 25
Date: 5/7/2005
Time: 1:53:25 AM
User: N/A
Computer: BiztalkProd1
Description:
Either another TDDS is processing the same data or there is an orphaned session in SQL server holding TDDS lock.EXECUTE permission denied on object 'TDDS_Lock', database 'BizTalkDTADb', owner 'dbo'. SQLServer: mysql, Database: BizTalkDTADb.


Soln: This means that your one of your Hosts other than the Tracking Host has the Host Tracking property Checked . Uncheck this and you should be all set