- 30 Nov 2021
- 2 Minutes to read
- Updated on 30 Nov 2021
- 2 Minutes to read
This section provides some troubleshooting tips, related to the Throttling Analyser. It consists of the following articles:
- Why can't I see any throttling data?
- Reason for the error “Category does not exist”
Why can't I see any throttling data?
There could be various reasons why you are not seeing the throttling data in the BizTalk360 Throttling Analyser. The following checklist can help you identify the issue:
Make sure BizTalk360 Analytics Service is running without any errors - The BizTalk360 Analytics Service is responsible for collecting the BizTalk host throttling performance counter(s) values. So, the health of the Analytics Service is very critical for collecting the data. You can verify the health of that service by navigating to Settings -> BizTalk360 Health -> Manage Services -> Analytics Service.
Make sure that the BizTalk360 Analytics Service account has Administrator Rights on all the BizTalk machines in the configured BizTalk environments - In order to collect performance data from a remote machine, the account should have administrator rights on the machine. There are other fine-grained options, but BizTalk360 only supports having administrator rights on all the configured servers.
Make sure that the BizTalk Host meets the following conditions
Handlers are created for the Hosts
Host Instances are created for the Host
InProcess host instance is in the Running state
Isolated host instance is loaded
You may need to restart the Analytics Service - When you restart the host instances, you may also need to restart the BizTalk360 Analytics service. Perfmon (in our case it's BizTalk360 Analytics service) does not detect when a managed program restarts on the remote computer. This issue occurs because the Remote Registry service runs under the Local Service account. The Local Service account is not a member of the Performance Monitor Users group or of the Performance Log Users group. Therefore, the Local Service account does not have access to the CLR performance counter IPC block. Nevertheless, you can monitor CLR performance counters because the Remote Registry service impersonates the user who initiated the monitoring.
However, if the monitored process restarts, a new IPC block is opened by an auxiliary thread in the Remote Registry service. This auxiliary thread does not impersonate the user on the client. Therefore, the thread cannot access the CLR performance counter IPC block. To work around this issue, restart the performance counter monitoring from the client.
Reason for the error “Category does not exist”
This error can happen in any of the BizTalk360 sections where Performance Counters are used and there is some problem with them.
"Category does not exist. System.InvalidOperationException: Category does not exist. at System.Diagnostics.PerformanceCounterLib.CounterExists(String machine, String category at System.Diagnostics.PerformanceCounter.InitializeImpl() at System.Diagnostics.PerformanceCounter..ctor(String categoryName, String counterName, instanceName, Boolean readOnly) at System.Diagnostics.PerformanceCounter..ctor(String categoryName, String counterName, instanceName)"
This problem is related to disabled Performance Counters. To identify if this can be the reason why you are getting this problem, run this command in an elevated command prompt:
If the problem exists, the result of the command should look like this:
*Performance Counter ID Queries [PERFLIB]: Base Index: 0x00000737 (1847) Last Counter Text ID: 0x00002160 (8544) Last Help Text ID: 0x00002161 (8545)
[PerfProc] Performance Counters (Disabled) DLL Name: %SystemRoot%\System32\perfproc.dll Open Procedure: OpenSysProcessObject Collect Procedure: CollectSysProcessObjectData Close Procedure: CloseSysProcessObject*
In this case, you can try to enable the performance counters by running the following command:
After the counters are enabled the problem should be solved. To investigate why your performance counters got disabled, search your server's Application Event Log for the source PerfLib.