Events
Mar 17, 9 PM - Mar 21, 10 AM
Join the meetup series to build scalable AI solutions based on real-world use cases with fellow developers and experts.
Register nowThis browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
Diagnosing your application's performance issues can be difficult, especially when running on a production environment in the dynamic cloud. Slow responses in your application could be caused by infrastructure, framework, or application code handling the request in the pipeline.
Code Optimizations, an AI-based service in Azure Application Insights, works in tandem with the Application Insights Profiler for .NET to detect CPU and memory usage performance issues at a code level and provide recommendations on how to fix them.
Make informed decisions and optimize your code using real-time performance data and insights gathered from your production environment.
You can review your Code Optimizations in the Azure portal.
The .NET Profiler and Code Optimizations work together to provide a holistic approach to performance issue detection.
Code Optimizations identifies, analyzes, and resolves the profiling data collected by the Application Insights Profiler for .NET. As the .NET Profiler uploads data to Application Insights, our machine learning model analyzes some of the data to find where the application's code can be optimized. Code Optimizations:
Using the Code Optimizations consolidated oveview page, you can see all Code Optimization recommendations across your Azure subscriptions and Application Insights resources in the Azure portal. Identify bottlenecks in your code and review code-level recommendations for dev, test, pre-production, and production environments.
Once your environment's data has been collected, Code Optimizations provides code-level recommendations on an hourly basis. By default, the aggregated data view shows a rolling 24-hour window of recently identitified issues, with a 30-day history for you to review and analyze past events.
After identifying and analyzing the Code Optimization results, you can resolve these issues in your code using the Code Optimizations Visual Studio and Visual Studio Code extensions. With these extensions, interact with GitHub Copilot to receive a code fix grounded in Code Optimizations insights.
The .NET Profiler focuses on tracing specific requests, down to the millisecond. It provides an excellent "big picture" view of issues within your application and general best practices to address them.
With Application Insights Profiler for .NET, you can capture, identify, and view performance traces for your application running in Azure, regardless of the scenario. The .NET Profiler trace process occurs automatically, at scale, and doesn't negatively affect your users. The .NET Profiler identifies:
Enable the Profiler for .NET on all your Azure applications to gather data with the following triggers:
Each of these triggers can be configured, enabled, or disabled.
Code Optimizations are generated automatically after Application Insights Profiler for .NET is enabled. By default, Profiler actively collects traces every hour for 30 seconds or during periods of high CPU or memory usage for 30 seconds. The hourly traces (called sampling) are great for proactive tuning, while the high CPU and memory traces (called triggers) are useful for reactive troubleshooting.
Note
When the Application Insights Profiler for .NET is actively running and collecting traces, it typically adds between 5% to 15% of CPU and memory overhead to your server.
There is no additional cost for storing data captured by .NET Profiler. The data is automatically deleted after 15 days.
Some Code Optimization features (such as code-level fix suggestions) require Copilot for GitHub and/or Copilot for Azure.
The Profiler and Code Optimizations work with .NET applications deployed on the following Azure services. View specific instructions for enabling Profiler for each service type in the following links.
Compute platform | .NET (>= 4.6) | .NET Core |
---|---|---|
Azure App Service - .NET app on Windows | Yes | Yes |
Azure App Service - .NET app on Linux | No | Yes |
Azure Virtual Machines and Virtual Machine Scale Sets for Windows | Yes | Yes |
Azure Cloud Services | Yes | Yes |
Azure Container Instances for Windows | No | Yes |
Azure Container Instances for Linux | No | Yes |
Kubernetes | No | Yes |
Azure Functions | Yes | Yes |
Azure Service Fabric | Yes | Yes |
Note
You can also use the Java Profiler for Azure Monitor Application Insights, currently in preview.
Code Optimizations is available in the same regions as Application Insights. You can check the available regions using the following command:
az account list-locations -o table
You can set an explicit region using connection strings. Learn more about connection strings with examples.
Profiling web apps:
Learn how to enable the .NET Profiler with Code Optimizations on your Azure service:
Events
Mar 17, 9 PM - Mar 21, 10 AM
Join the meetup series to build scalable AI solutions based on real-world use cases with fellow developers and experts.
Register nowTraining
Learning path
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization
Certification
Microsoft Certified: Azure Developer Associate - Certifications
Build end-to-end solutions in Microsoft Azure to create Azure Functions, implement and manage web apps, develop solutions utilizing Azure storage, and more.
Documentation
Troubleshoot Application Insights Profiler for .NET - Azure Monitor
Walk through troubleshooting steps and information to enable and use Application Insights Profiler for .NET.
Enable Application Insights Profiler for .NET for Azure App Service apps in Windows - Azure Monitor
Profile live apps on Azure App Service with Application Insights Profiler for .NET.
Configure Application Insights Profiler for .NET - Azure Monitor
Use the Application Insights Profiler for .NET settings pane to see the Profiler status and start profiling sessions