Meeting Performance Goals for Azure Deployments: Listing 2.

Adding performance counters.

public override bool OnStart()
            bool collectCountersForLoad = default(bool);
            collectCountersForLoad = bool.Parse(RoleEnvironment.GetConfigurationSettingValue("LoadTesting"));
            List<string> countersToWatch = new List<string>();

            if (collectCountersForLoad)
                TimeSpan sampleInterval = TimeSpan.FromSeconds(5);
                countersToWatch.Add(@"\Processor(_Total)\% Processor Time");
                countersToWatch.Add(@"\.NET CLR Memory(_Global_)\Gen 0 heap size");
                countersToWatch.Add(@"\.NET CLR Memory(_Global_)\Gen 1 heap size");
                countersToWatch.Add(@"\.NET CLR Memory(_Global_)\Gen 2 heap size");


            // To enable the AzureLocalStorageTraceListner, uncomment relevent section in the web.config  
            DiagnosticMonitorConfiguration diagnosticConfig = DiagnosticMonitor.GetDefaultInitialConfiguration();
            diagnosticConfig.Directories.ScheduledTransferPeriod = TimeSpan.FromMinutes(1);

            foreach(string counter in countersToWatch)
                diagnosticConfig.PerformanceCounters.DataSources.Add(new PerformanceCounterConfiguration
                                                                        {   CounterSpecifier = counter,
                                                                            SampleRate = TimeSpan.FromSeconds(5)

            DiagnosticMonitor.Start("Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString", diagnosticConfig);
            // For information on handling configuration changes
            // see the MSDN topic at

            return base.OnStart();

About the Author

Joseph Fultz is a cloud solution architect at Microsoft. He works with Microsoft customers developing architectures for solving business problems leveraging Microsoft Azure. Formerly, Fultz was responsible for the development and architecture of GM's car-sharing program ( Contact him on Twitter: @JosephRFultz or via e-mail at [email protected].

comments powered by Disqus


  • Edit Local Images/Text from a .NET MAUI Blazor Hybrid App

    With .NET 6 and the latest Visual Studio 2022 preview, developers can create a hybrid Blazor/.NET MAUI app that can work with local machine resources in ways that ordinary Blazor (web) apps can't.

  • In VS 2022, WinForms Designer Still Chasing Parity with .NET Framework Version

    Microsoft provided an update on its years-long effort to bring the new Windows Forms designer up to speed with the old .NET Framework version.

  • See What's New for Git in Latest Visual Studio 2022 Update

    Four new Git features have been added to Visual Studio 2022 in the latest update, Preview 2, including the ability to compare branches and multi-repo branching.

  • Infragistics Adds 17 Controls to Blazor/Web Components Libraries

    Infragistics Ultimate 21.2 is out with an integrated low-code App Builder and 17 new controls for the Blazor and Web Components libraries of Ignite UI, the company's web-based UI toolkit.

Upcoming Events