{"id":7369,"date":"2018-10-08T10:00:38","date_gmt":"2018-10-08T14:00:38","guid":{"rendered":"https:\/\/www.eginnovations.com\/blog\/?p=7369"},"modified":"2024-05-28T11:39:42","modified_gmt":"2024-05-28T15:39:42","slug":"top-7-net-application-performance-problems","status":"publish","type":"post","link":"https:\/\/www.eginnovations.com\/blog\/top-7-net-application-performance-problems\/","title":{"rendered":".NET Performance Issues and Problems"},"content":{"rendered":"<h2>Top 7 Performance Problems in .NET Applications and How to solve them<\/h2>\n<p>Microsoft .NET Framework is one of the most popular application development platforms and programming languages. C# and ASP.NET frameworks are used by millions of developers for building Windows client applications, XML Web services, distributed components, client-server applications, database applications, and so on. It\u2019s no surprise that ensuring top-notch performance of .NET applications is a foremost need for most application owners and developers.<\/p>\n<p>There can be numerous reasons why .NET performance issues occur and cause applications to be slow. These include incorrect memory sizing, GC pauses, code-level errors, excessive logging of exceptions, high usage of synchronized blocks, IIS server bottlenecks, and so on. In this blog, we will look at some of the top performance problems in .NET applications and provide tips to troubleshoot and resolve them.<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/content.eginnovations.com\/microsoft-net-problems\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-11168\" src=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/10\/7-net-application-performance-problems-banner.jpg\" alt=\"7-net-application-performance-problems-banner\" width=\"880\" height=\"175\" border=\"0\" srcset=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/10\/7-net-application-performance-problems-banner.jpg 880w, https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/10\/7-net-application-performance-problems-banner-300x60.jpg 300w, https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/10\/7-net-application-performance-problems-banner-800x159.jpg 800w, https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/10\/7-net-application-performance-problems-banner-310x62.jpg 310w, https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/10\/7-net-application-performance-problems-banner-140x28.jpg 140w\" sizes=\"auto, (max-width: 880px) 100vw, 880px\" \/><\/a><\/p>\n<table class=\"java-problems-list\" border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"10\">\n<tbody>\n<tr>\n<th class=\"problems-list-title\" style=\"background: #f1f1f1;\" valign=\"top\" nowrap=\"nowrap\">\n<h3 style=\"font-size: 18px; margin: 0; padding: 0; font-weight: bold;\">Top 7 .NET Application Performance Problems<\/h3>\n<\/th>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"91%\">\n<ol class=\"ol_style_line\" style=\"margin: 15px 0;\">\n<li><a href=\"#Exceptions-Logs\" rel=\"Exceptions-Logs\">Exceptions and Logs One Too Many<\/a><\/li>\n<li><a href=\"#Threads\" rel=\"Threads\">Overuse of Thread Synchronization and Locking<\/a><\/li>\n<li><a href=\"#Application-Hangs\" rel=\"Application-Hangs\">The Dreadful Application Hangs<\/a><\/li>\n<li><a href=\"#Garbage-Collection\" rel=\"Garbage-Collection\">Frequent Garbage Collection Pauses<\/a><\/li>\n<li><a href=\"#IIS-Server\" rel=\"IIS-Server\">IIS Server Bottlenecks<\/a><\/li>\n<li id=\"Exceptions-Logs\"><a href=\"#Database-Calls\" rel=\"Database-Calls\">Slow Database Calls<\/a><\/li>\n<li><a href=\"#Infrastructure\" rel=\"Infrastructure\">Infrastructure at Fault: Not a .NET Problem, But Still a Problem for .NET!<\/a><\/li>\n<\/ol>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3 class=\"question-text\">#1 Exceptions and Logs One Too Many<\/h3>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignright wp-image-7378 size-full\" src=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/10\/logs-one-too-many.jpg\" alt=\"Logs One Too Many image - a common .NET problem\" width=\"160\" height=\"130\" border=\"0\" srcset=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/10\/logs-one-too-many.jpg 160w, https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/10\/logs-one-too-many-140x114.jpg 140w\" sizes=\"auto, (max-width: 160px) 100vw, 160px\" \/>.NET exceptions are not a bad thing. Only errors are bad. This is what most developers believe. And it is true if exceptions are properly handled, i.e., thrown, caught and addressed (and NOT ignored). Too many cooks spoil the broth and it\u2019s the same with exceptions. Too many unhandled exceptions can make the code inefficient and affect <a href=\"https:\/\/www.eginnovations.com\/blog\/what-is-application-performance-monitoring\/\/\">application performance<\/a>. Hidden exceptions are worse: a minefield. When left unchecked, they can affect web page load times.<\/p>\n<p>Another .NET problem is excessively logging the exceptions. Logging could be a great tool in your debugging arsenal to identify abnormalities recorded at the time of application processing. But when logging is set up to catch exceptions at every tier of the application architecture, one could end up having the same exception logged at the web, service and data tiers. This could add additional load to the application code and increase response time. In production environments, one needs to be careful to only log fatal events and errors. Logging everything including informational messages, debugs and warnings can easily bloat your production log file and in turn affect code processing.<\/p>\n<div class=\"tips-box\" style=\"padding: 25px 20px 2px;\">\n<p class=\"tips-title\" style=\"margin-bottom: 15px;\"><strong>Helpful Troubleshooting Tips:<\/strong><\/p>\n<ul>\n<li>Make sure your C# code has \u201ctry catch finally\u201d blocks to handle exceptions.<\/li>\n<li>Leverage exception filters available in C# 6 and above, which allows specifying a conditional clause for each catch block<\/li>\n<li>Check for null values and use TryParse to avoid potential exceptions.<\/li>\n<li>Pay attention to second-chance exceptions, as these indicate that the first-chance exception came up and it wasn\u2019t handled properly.<\/li>\n<li id=\"Threads\">Use exception handling and logging libraries such as Enterprise Library, NLog, Serilog, or log4net to log exceptions to a file or a database.<\/li>\n<li>Make sure you log exceptions only as much as needed and not end up bloating the log file.<\/li>\n<\/ul>\n<\/div>\n<h3 class=\"question-text\">#2 Overuse of Thread Synchronization and Locking<\/h3>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-7381 alignleft\" src=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/10\/thread-locking.jpg\" alt=\"Thread Synchronization and Locking\" width=\"160\" height=\"130\" border=\"0\" srcset=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/10\/thread-locking.jpg 160w, https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/10\/thread-locking-140x114.jpg 140w\" sizes=\"auto, (max-width: 160px) 100vw, 160px\" \/>The .NET Framework offers many thread synchronization options such as inter-process mutexes, Reader\/Writer locks, etc. There will be times when a .NET developer would write the code in such a way that only one thread could get serviced at a given time and the other parallel threads coming in for processing will have to wait in a queue. For example, a checkout application, according to its business logic, should process items one request at a time. Synchronization and locking help serialize the incoming threads for execution. By creating a synchronized block of code and applying a lock on a specific object, an incoming thread is required to wait until the lock on the synchronized object is available. While this strategy helps in certain situations, it should not be overused. Too much serialization of threads will increase wait time of incoming threads and end up slowing down user transactions.<\/p>\n<div class=\"tips-box\" style=\"padding: 25px 20px 2px;\">\n<p class=\"tips-title\" style=\"margin-bottom: 15px;\"><strong>Helpful Troubleshooting Tips:<\/strong><\/p>\n<ul>\n<li>Use synchronized coding and locks only when necessary. Understand the need of the code execution before deciding to use locks.<\/li>\n<li>Scope the duration of locks optimally so that they are acquired late and released early and does not hold other threads in wait for a long time.<\/li>\n<li id=\"Application-Hangs\">To reduce concurrency issues, consider using loose coupling. Event-delegation models can also be used to minimize lock contention.<\/li>\n<li>Monitor the .NET code using <a href=\"https:\/\/www.eginnovations.com\/supported-technologies\/microsoft-net-monitoring\">code profiling tools<\/a> to identify if thread locks are causing slow application processing.<\/li>\n<\/ul>\n<\/div>\n<h3 class=\"question-text\">#3 The Dreadful Application Hangs<\/h3>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-7375 alignright\" src=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/10\/application-hangs.jpg\" alt=\"Application Hangs\" width=\"160\" height=\"130\" border=\"0\" srcset=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/10\/application-hangs.jpg 160w, https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/10\/application-hangs-140x114.jpg 140w\" sizes=\"auto, (max-width: 160px) 100vw, 160px\" \/>When a specific URL is slow, it is one thing to handle. But when the IIS web site just hangs and all or most web pages take forever to load, it couldn\u2019t get any worse. Typically, when an application is overloaded or deadlocked, a hang could occur. There are two types of application hang scenarios that .NET applications usually encounter.<\/p>\n<p><strong>A hard hang (IIS issue):<\/strong> This usually happens at the beginning of the request processing pipeline \u2013 where the request is queued. Because of an application deadlock, all available threads could get blocked, causing subsequent incoming requests to end up in a queue waiting to be serviced. This can also happen when the number of active requests exceed the concurrency limit configured on the IIS Server. Such a hang would manifest as requests getting timed out and receiving 503 Service Unavailable errors. A hard hang affects all URLs and the whole web application itself.<\/p>\n<div class=\"tips-box\" style=\"padding: 25px 20px 2px; margin-bottom: 25px;\">\n<p class=\"tips-title\" style=\"margin-bottom: 15px;\"><strong>Helpful Troubleshooting Tips:<\/strong><\/p>\n<ul>\n<li>Constantly track number of requests in queue in the IIS Server (<i>Http Service Request Queues\\ArrivalRate in Windows performance monitor<\/i>). This should never exceed the request processing limit configured for the worker process.<\/li>\n<li>Also track how long requests are waiting in queues (<i>Http Service Request Queues\\MaxQueueItemAge in Windows performance monitor<\/i>). This will help detect\u00a0if the application is facing a potential hang.<\/li>\n<li>Also watch out for service unavailable and connection timeout errors by monitoring IIS server events.<\/li>\n<\/ul>\n<\/div>\n<p><strong>A soft hang (ASP.NET issue):<\/strong> This usually happens due to a bad application code in a specific segment, impacting only a few URLs and not the full website. Typically, a hang caused by the ASP.NET controller or page happens at the <i>ExecuteRequestHandler<\/i> stage. To confirm this, you might want to break out a debugger to see exactly where the request is stuck. Check the module name, stage name and URL. The URL will indicate the controller\/page causing the hang.<\/p>\n<div class=\"tips-box\" style=\"padding: 25px 20px 2px; margin-bottom: 25px;\">\n<p class=\"tips-title\" style=\"margin-bottom: 15px;\"><strong>Helpful Troubleshooting Tips:<\/strong><\/p>\n<ul>\n<li>Verify whether IIS is the issue or not by checking the <i>Http Service Request Queues\\CurrentQueueSize<\/i> counter in the Windows performance monitor. If it\u2019s 0, then there is no request stuck in an IIS queue.<\/li>\n<li>If it\u2019s not an IIS issue, it must be a code-level problem in ASP.NET controller\/page.<\/li>\n<li id=\"Garbage-Collection\">Identify which URL(s) are hanging and get a detailed request trace using any code profiling. Verify the module name and stage name at which the request hangs to confirm it\u2019s an ASP.NET issue.<\/li>\n<li>Code profiling using a <a href=\"https:\/\/www.eginnovations.com\/supported-technologies\/microsoft-net-monitoring\">transaction tracing tool<\/a> can help identify the exact line of code where the problem exists.<\/li>\n<\/ul>\n<\/div>\n<div class=\"btn-center-style\" style=\"text-align: center;\"><a href=\"https:\/\/www.eginnovations.com\/supported-technologies\/microsoft-net-monitoring\" target=\"_self\" rel=\"noopener noreferrer\">Eliminate .NET Application Performance Issues. Find out how \u00bb<\/a><\/div>\n<h3 class=\"question-text\">#4 Frequent Garbage Collection Pauses<\/h3>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignleft wp-image-7376 size-full\" src=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/10\/garbage-collection.jpg\" alt=\"Garbage Collection issues can cause .NET performance issues - image is a garbage can\" width=\"160\" height=\"130\" border=\"0\" srcset=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/10\/garbage-collection.jpg 160w, https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/10\/garbage-collection-140x114.jpg 140w\" sizes=\"auto, (max-width: 160px) 100vw, 160px\" \/>Garbage collection (GC) in .NET CLR is initialized when the memory used by the allocated objects on the managed heap exceeds the accepted threshold configured by the application developer. This is when the GC.Collect method jumps into action and reclaims the memory occupied by dead objects. GC\u00a0in the CLR usually happens in Generation 0 heap where short-lived objects are stored. It is called Full GC when GC happens in Generation 2 heap, where long-lived objects are contained. Every time GC happens it adds a lot of CPU load on the CLR and slows down application processing. So, in the event of longer and more frequent GC pauses, the application tends to suffer slowdowns.<\/p>\n<div class=\"tips-box\" style=\"padding: 25px 20px 2px; margin-bottom: 30px;\">\n<p class=\"tips-title\" style=\"margin-bottom: 15px;\"><strong>Helpful Troubleshooting Tips:<\/strong><\/p>\n<ul>\n<li>Size GC heap memory properly and make sure GC limits are set as required.<\/li>\n<li>Avoid using objects and large strings where they are not needed.<\/li>\n<li>Track instances of GC, time taken for GC, and % of GC time spent by the JVM.<\/li>\n<li>Look for times when Full GC happens. This can cause application slowness.<\/li>\n<li id=\"IIS-Server\">Judiciously use server GC or workstation GC based on application needs.<\/li>\n<li>Monitor the CLR layer end to end to identify memory usage, GC activity, CPU spikes, etc.<\/li>\n<\/ul>\n<\/div>\n<div class=\"btn-center-style\" style=\"text-align: center; margin-bottom: 30px;\"><a href=\"https:\/\/www.eginnovations.com\/webinar\/high-performing-microsoft-net-applications\" target=\"_self\" rel=\"noopener noreferrer\">View this webinar: How to Ensure High-Performing .NET Applications \u00bb<\/a><\/div>\n<h3 class=\"question-text\">#5 IIS Server Bottlenecks<\/h3>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-7379 alignright\" src=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/10\/server-bottlenecks.jpg\" alt=\"Server Bottlenecks\" width=\"160\" height=\"130\" border=\"0\" srcset=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/10\/server-bottlenecks.jpg 160w, https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/10\/server-bottlenecks-140x114.jpg 140w\" sizes=\"auto, (max-width: 160px) 100vw, 160px\" \/>Microsoft IIS Server is a critical part of the .NET Framework. IIS is the web server which hosts the web application or web site built on .NET and runs W3WP process that is responsible to respond to the incoming requests. IIS also incorporates the Common Language Runtime (CLR), which is responsible to mete out resources for thread processing. Because IIS has various moving parts, a bottleneck in IIS could have a direct negative impact on the .NET application performance.<\/p>\n<p style=\"margin-bottom: 15px;\">Commonly faced IIS Server problems:<\/p>\n<ul>\n<li>Server overload due to overutilization of resources such as memory, CPU, etc.<\/li>\n<li>High concurrent connections and connection drops<\/li>\n<li>Application pool failure<\/li>\n<li>Expiry of SSL certificates<\/li>\n<li>High response time of the ASP.NET request handling service<\/li>\n<li>High CLR wait time<\/li>\n<li>Improper caching<\/li>\n<li>HTTP errors including static and dynamic content errors and connection errors<\/li>\n<\/ul>\n<div class=\"tips-box\" style=\"padding: 25px 20px 2px;\">\n<p class=\"tips-title\" style=\"margin-bottom: 15px;\"><strong>Helpful Troubleshooting Tips:<\/strong><\/p>\n<ul>\n<li>Right-size the IIS server so there\u2019s no resource contention or overutilization of resources.<\/li>\n<li>Load balance with more IIS servers based on rate of incoming requests.<\/li>\n<li id=\"Database-Calls\">Track SSL certificate validity and <a href=\"https:\/\/www.eginnovations.com\/product\/proactive-monitoring-software-tools\">get alerted proactively<\/a> before a certificate expires.<\/li>\n<li><a href=\"https:\/\/www.eginnovations.com\/supported-technologies\/iis-monitoring\">Monitor all aspects of IIS performance<\/a>, application pools, web sites and identify improper configuration and performance deviations.<\/li>\n<\/ul>\n<\/div>\n<h3 class=\"question-text\">#6 Slow Database Calls<\/h3>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-7380 alignleft\" src=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/10\/slow-database-calls.jpg\" alt=\"Application Hangs\" width=\"160\" height=\"130\" border=\"0\" srcset=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/10\/slow-database-calls.jpg 160w, https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/10\/slow-database-calls-140x114.jpg 140w\" sizes=\"auto, (max-width: 160px) 100vw, 160px\" \/>It\u2019s not always a .NET code issue that\u2019s affecting application performance. Slow-running queries are often a common cause. But it\u2019s usually the .NET application developers who get blamed for <a href=\"https:\/\/www.eginnovations.com\/webinar\/my-application-is-slow\">slow application performance<\/a>. The reason for this is there\u2019s no contextual visibility of how SQL performance affects .NET application processing. ADO.NET and ODP.NET connectivity issues could be one reason for query processing slowness, but the common reason is that the queries are not well-formed. Improper execution plans, missing indexes, poorly designed schema, small buffer pools, missing joins, improper caching, connections not being pooled properly, etc. are also reasons why query processing by the database could be affected.<\/p>\n<p>While the DBAs are responsible for the database performance and query creation, the .NET application owner needs to track down query-level issues during application processing. This will help distinguish between code-level and database problems and not have the .NET developers spend cycles looking for issues in the code.<\/p>\n<div class=\"tips-box\" style=\"padding: 25px 20px 2px; margin-bottom: 25px;\">\n<p class=\"tips-title\" style=\"margin-bottom: 15px;\"><strong>Helpful Troubleshooting Tips:<\/strong><\/p>\n<ul>\n<li>Monitor query processing in context of application transactions to identify slow queries.<\/li>\n<li>Plan database sizing and configuration properly to ensure the consistent performance.<\/li>\n<li>Use <a href=\"https:\/\/www.eginnovations.com\/supported-technologies\/database-monitoring\">database monitoring tools<\/a> to identify and fix missing indexes, optimize the database layout by re-indexing, etc.<\/li>\n<li>Track database connectivity with the application to isolate any connection issues.<\/li>\n<\/ul>\n<\/div>\n<p><strong>BONUS TIP:<\/strong> In addition to slow database calls, there could also be <a class=\"link\" href=\"https:\/\/www.eginnovations.com\/supported-technologies\/microsoft-net-monitoring#supported\">slowness due to external calls<\/a>, such as HTTP, Web Service, WCF. .NET code profiling will help catch .NET performance problems cause by method-level issues, database query-level problems and slow remote procedure calls.<\/p>\n<div class=\"wp-caption aligncenter\">\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-7413 size-full\" src=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/12\/NET.jpg\" alt=\".Net Execution Analysis screenshot sourcing a .NET performance issue to a specific call within a call stack\" width=\"1039\" height=\"593\" border=\"0\" srcset=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/12\/NET.jpg 1039w, https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/12\/NET-300x171.jpg 300w, https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/12\/NET-1024x584.jpg 1024w, https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/12\/NET-800x457.jpg 800w, https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/12\/NET-310x177.jpg 310w, https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/12\/NET-140x80.jpg 140w\" sizes=\"auto, (max-width: 1039px) 100vw, 1039px\" \/><\/p>\n<div class=\"img_caption\">Distributed transaction tracing providing stack trace of .NET code processing<\/div>\n<\/div>\n<h3 class=\"question-text\">#7 Infrastructure at Fault: Not a .NET Problem, But Still a Problem for .NET!<\/h3>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-7377 alignright\" src=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/10\/infrastructure-fault.jpg\" alt=\"Infrastructure at Fault\" width=\"160\" height=\"130\" border=\"0\" srcset=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/10\/infrastructure-fault.jpg 160w, https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/10\/infrastructure-fault-140x114.jpg 140w\" sizes=\"auto, (max-width: 160px) 100vw, 160px\" \/>.NET Framework is not a standalone tier. An application using .NET Framework will have many dependencies with the underlying infrastructure, such as any virtualized servers, containers or cloud infrastructure. Then, there could be backend storage devices. While these are not .NET problems directly, but a problem in any of these infrastructure components could affect .NET performance just the same.<\/p>\n<p>Just like how we saw IIS Servers and database could have bottlenecks, a VM could be running out of resources, a SAN array could be experience high IOPS that it cannot handle, or if the .NET application is hosted on Azure there could be an App Service that is not running properly.<\/p>\n<p>Network-related complaints top the chart in most application environments. There is always the blame game between whether it\u2019s a network issue or the application issue. Network congestions, packet drops, or device failures could impact application performance and connectivity.<\/p>\n<div class=\"tips-box\" style=\"padding: 25px 20px 2px; margin-bottom: 25px;\">\n<p class=\"tips-title\" style=\"margin-bottom: 15px;\"><strong>Helpful Troubleshooting Tips:<\/strong><\/p>\n<p>Total performance assurance of the .NET application environment requires correlated visibility of dependencies between the application and the supporting infrastructure. Make sure you implement a <a href=\"https:\/\/www.eginnovations.com\/converged-application-infrastructure-monitoring\">converged application and infrastructure monitoring<\/a> strategy to catch infrastructure issues.<\/p>\n<\/div>\n<p>While you focus on catching and troubleshooting all these issues, it is also important to keep in mind that writing clean and efficient code solves many problems on the .NET side. Write good code, keep your systems and infrastructure in good health, and implement necessary tools for monitoring automation. This will help you deliver high-performing .NET applications and digital experience.<\/p>\n<p><a href=\"https:\/\/www.eginnovations.com\/product\/demo\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-8613 size-full\" src=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2019\/04\/dot-net-page-popup.jpg\" alt=\"\" width=\"800\" height=\"420\" border=\"0\" srcset=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2019\/04\/dot-net-page-popup.jpg 800w, https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2019\/04\/dot-net-page-popup-300x158.jpg 300w, https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2019\/04\/dot-net-page-popup-310x163.jpg 310w, https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2019\/04\/dot-net-page-popup-140x74.jpg 140w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Top 7 Performance Problems in .NET Applications and How to solve them Microsoft .NET Framework is one of the most popular application development platforms and programming languages. C# and ASP.NET frameworks are used by millions of developers for building Windows client applications, XML Web services, distributed components, client-server applications, database applications, and so on. It\u2019s [&hellip;]<\/p>\n","protected":false},"author":15,"featured_media":7392,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"_lmt_disableupdate":"no","_lmt_disable":"","footnotes":""},"categories":[370],"tags":[497,498,476],"class_list":["post-7369","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-net-monitoring","tag-net-applications","tag-net-slow","tag-microsoft-net"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>.NET Performance Issues and Problems | eG Innovations.com<\/title>\n<meta name=\"description\" content=\"Resolve your applications&#039; Microsoft .NET performance problems once and for all. Solutions to the top 7 problems facing .NET developers.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.eginnovations.com\/blog\/top-7-net-application-performance-problems\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\".NET Problems and Performance Issues | eG Innovations.com\" \/>\n<meta property=\"og:description\" content=\"Resolve your .NET application performance problems once and for all. Here are the solutions to 7 of the top problems facing .NET developers.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.eginnovations.com\/blog\/top-7-net-application-performance-problems\/\" \/>\n<meta property=\"og:site_name\" content=\"eG Innovations\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/eGInnovations\" \/>\n<meta property=\"article:published_time\" content=\"2018-10-08T14:00:38+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-05-28T15:39:42+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/10\/dot-net-performance-problems.jpg\" \/>\n<meta name=\"author\" content=\"Vinod Mohan\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\".NET Problems and Performance Issues | eG Innovations.com\" \/>\n<meta name=\"twitter:description\" content=\"Resolve your .NET application performance problems once and for all. Here are the solutions to 7 of the top problems facing .NET developers.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/10\/microsoft-apps-monitoring-tools.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@eginnovations\" \/>\n<meta name=\"twitter:site\" content=\"@eginnovations\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Vinod Mohan\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":".NET Performance Issues and Problems | eG Innovations.com","description":"Resolve your applications' Microsoft .NET performance problems once and for all. Solutions to the top 7 problems facing .NET developers.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.eginnovations.com\/blog\/top-7-net-application-performance-problems\/","og_locale":"en_US","og_type":"article","og_title":".NET Problems and Performance Issues | eG Innovations.com","og_description":"Resolve your .NET application performance problems once and for all. Here are the solutions to 7 of the top problems facing .NET developers.","og_url":"https:\/\/www.eginnovations.com\/blog\/top-7-net-application-performance-problems\/","og_site_name":"eG Innovations","article_publisher":"https:\/\/www.facebook.com\/eGInnovations","article_published_time":"2018-10-08T14:00:38+00:00","article_modified_time":"2024-05-28T15:39:42+00:00","og_image":[{"url":"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/10\/dot-net-performance-problems.jpg","type":"","width":"","height":""}],"author":"Vinod Mohan","twitter_card":"summary_large_image","twitter_title":".NET Problems and Performance Issues | eG Innovations.com","twitter_description":"Resolve your .NET application performance problems once and for all. Here are the solutions to 7 of the top problems facing .NET developers.","twitter_image":"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/10\/microsoft-apps-monitoring-tools.jpg","twitter_creator":"@eginnovations","twitter_site":"@eginnovations","twitter_misc":{"Written by":"Vinod Mohan","Est. reading time":"12 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.eginnovations.com\/blog\/top-7-net-application-performance-problems\/#article","isPartOf":{"@id":"https:\/\/www.eginnovations.com\/blog\/top-7-net-application-performance-problems\/"},"author":{"name":"Vinod Mohan","@id":"https:\/\/www.eginnovations.com\/blog\/#\/schema\/person\/0b821d650520e5ce664e5073c984e972"},"headline":".NET Performance Issues and Problems","datePublished":"2018-10-08T14:00:38+00:00","dateModified":"2024-05-28T15:39:42+00:00","mainEntityOfPage":{"@id":"https:\/\/www.eginnovations.com\/blog\/top-7-net-application-performance-problems\/"},"wordCount":2106,"commentCount":0,"publisher":{"@id":"https:\/\/www.eginnovations.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.eginnovations.com\/blog\/top-7-net-application-performance-problems\/#primaryimage"},"thumbnailUrl":"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/10\/application-hang-monitor.jpg","keywords":[".NET applications",".NET slow","Microsoft .NET"],"articleSection":[".NET Monitoring"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.eginnovations.com\/blog\/top-7-net-application-performance-problems\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.eginnovations.com\/blog\/top-7-net-application-performance-problems\/","url":"https:\/\/www.eginnovations.com\/blog\/top-7-net-application-performance-problems\/","name":".NET Performance Issues and Problems | eG Innovations.com","isPartOf":{"@id":"https:\/\/www.eginnovations.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.eginnovations.com\/blog\/top-7-net-application-performance-problems\/#primaryimage"},"image":{"@id":"https:\/\/www.eginnovations.com\/blog\/top-7-net-application-performance-problems\/#primaryimage"},"thumbnailUrl":"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/10\/application-hang-monitor.jpg","datePublished":"2018-10-08T14:00:38+00:00","dateModified":"2024-05-28T15:39:42+00:00","description":"Resolve your applications' Microsoft .NET performance problems once and for all. Solutions to the top 7 problems facing .NET developers.","breadcrumb":{"@id":"https:\/\/www.eginnovations.com\/blog\/top-7-net-application-performance-problems\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.eginnovations.com\/blog\/top-7-net-application-performance-problems\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.eginnovations.com\/blog\/top-7-net-application-performance-problems\/#primaryimage","url":"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/10\/application-hang-monitor.jpg","contentUrl":"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2018\/10\/application-hang-monitor.jpg","width":300,"height":200,"caption":"Application Hang Monitoring Tools"},{"@type":"BreadcrumbList","@id":"https:\/\/www.eginnovations.com\/blog\/top-7-net-application-performance-problems\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.eginnovations.com\/blog\/"},{"@type":"ListItem","position":2,"name":".NET Performance Issues and Problems"}]},{"@type":"WebSite","@id":"https:\/\/www.eginnovations.com\/blog\/#website","url":"https:\/\/www.eginnovations.com\/blog\/","name":"eG Innovations","description":"IT Performance Monitoring Insights","publisher":{"@id":"https:\/\/www.eginnovations.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.eginnovations.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.eginnovations.com\/blog\/#organization","name":"eG Innovations","alternateName":"eg innovations","url":"https:\/\/www.eginnovations.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.eginnovations.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2014\/07\/eg-logo-dark-gray1_new.jpg","contentUrl":"https:\/\/www.eginnovations.com\/blog\/wp-content\/uploads\/2014\/07\/eg-logo-dark-gray1_new.jpg","width":362,"height":235,"caption":"eG Innovations"},"image":{"@id":"https:\/\/www.eginnovations.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/eGInnovations","https:\/\/x.com\/eginnovations"]},{"@type":"Person","@id":"https:\/\/www.eginnovations.com\/blog\/#\/schema\/person\/0b821d650520e5ce664e5073c984e972","name":"Vinod Mohan","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.eginnovations.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/1476c17889cb8f3329c5b96d947551af?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1476c17889cb8f3329c5b96d947551af?s=96&d=mm&r=g","caption":"Vinod Mohan"},"sameAs":["https:\/\/www.eginnovations.com","eguser"],"url":"https:\/\/www.eginnovations.com\/blog\/author\/vinodmohan\/"}]}},"modified_by":"Review eG","_links":{"self":[{"href":"https:\/\/www.eginnovations.com\/blog\/wp-json\/wp\/v2\/posts\/7369","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.eginnovations.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.eginnovations.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.eginnovations.com\/blog\/wp-json\/wp\/v2\/users\/15"}],"replies":[{"embeddable":true,"href":"https:\/\/www.eginnovations.com\/blog\/wp-json\/wp\/v2\/comments?post=7369"}],"version-history":[{"count":0,"href":"https:\/\/www.eginnovations.com\/blog\/wp-json\/wp\/v2\/posts\/7369\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.eginnovations.com\/blog\/wp-json\/wp\/v2\/media\/7392"}],"wp:attachment":[{"href":"https:\/\/www.eginnovations.com\/blog\/wp-json\/wp\/v2\/media?parent=7369"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.eginnovations.com\/blog\/wp-json\/wp\/v2\/categories?post=7369"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.eginnovations.com\/blog\/wp-json\/wp\/v2\/tags?post=7369"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}