Application performance monitoring can be quite a broad subject because there are so many different types of applications: web applications, SaaS applications, fat applications, etc. In this article we’re going to look at what is application performance monitoring, why it’s important and show you some tools to help you monitor different types of applications.
In today’s digital economy, speed is everything. Especially for applications and websites accessed by end users, when there is slowness, it will have a direct detrimental impact on business productivity, profits and even the brand itself.
If an ecommerce application loads slowly or experiences errors, it will translate into loss of business, and the customer might end up switching to another website – possibly your competitor.
Whether it is a custom web application, VDI application, mobile application, or a packaged enterprise application such as SAP, Siebel, SharePoint, ensuring high performance and user experience in production defines the success of the application.
Why is My Application Slow? Best Practices for Troubleshooting
Given the complexity of today’s application infrastructures, this is not easy to achieve. Mobile app development platforms, cloud-native infrastructures, virtualized and containerized servers, dynamic and ephemeral application architectures, IoT, etc. make performance management a challenge. With the heterogeneous nature of the IT landscape and the various interdependencies between components, it is difficult to identify the cause of application slowness. One of the toughest questions application owners, developers and IT managers face is “Why is my application slow?”.
Slow is the New Down
When an application is slow, you’ll need to discover the following: why is it slow, since when, and what is causing slowness. This is where monitoring techniques come into play. Some of the traditional approaches to performance monitoring include executing ping tests on applications suspected to be slow, Telnetting to application ports for diagnosis, measuring server level metrics (CPU, memory, disk, etc.), and so on. But these are not sufficient to locate the bottlenecks in today’s distributed application environments. Organizations need to be able to connect the user journey with the application infrastructure and understand when, where, and why user experience is affected during application access.
Enter Application Performance Monitoring
Measuring the availability, response time and behaviour of each and every business transaction is key to understanding the user journey. When a user performs a transaction on a digital business service, the application owner needs to know:
- If the application is responding as it should
- Whether all the backend processes are being executed as they should
- If there is any slowness in transaction processing, which part of the application architecture is causing it
- Whether there is an error/bug in the application code, a problem in the application server or in the web front end, a query executing slowly, a hotspot in the backend database, slow network, etc.
So, monitoring must evolve from just looking at hardware metrics to analyzing application codes and business transactions. The performance of an application should be measured with a user -centric view. This forms the basis of application performance monitoring (APM).
What is Application Performance Monitoring?
Application performance monitoring is the strategy and practice of continuously monitoring and tracking the performance of business applications and the user experience of end users as they access the applications to understand trends, isolate anomalies, and get actionable insight for problem resolution and code optimization.
Various Aspects of Application Performance Monitoring
An APM strategy should ideally comprise the following:
#1 Digital user experience monitoring: This deals with tracking the experience of application users and identifying times when they experience slowness, errors, downtime. There are two popular approaches to doing this: by synthetically simulating user transactions and testing them proactively from different locations; and by passively monitoring user experience of real users as they access applications in real time.
#2 Transaction profiling: This involves instrumenting byte-code during application runtime and analyzing the transaction flow through every tier of the application architecture to isolate where slowness is being caused. Using a tag-and-follow approach, business transactions can be traced through the front end, across the middleware, all the way to the backend database.
#3 Application code-level diagnostics: When transaction tracing reveals slowness is happening at the application server, the application developer needs to know if there is a problem in the application code. According to a DZone performance survey, 43% of application performance issues are due an issue in the application code. Transaction profiling usually provides the capability for developers and app owners to drill down into the code and get method-level processing time breakdown. When a user transaction is slow, it is then possible to pinpoint the exact line of code, database query or third-party call that is taking high processing time.
#4 Application deep-dive analysis: When there’s a problem in the application infrastructure – say in the application server when the connection pool is exhausted or there is high wait time for threads, or in the JVM or .NET CLR level when Garbage Collection is happening frequently or there is insufficient heap memory – it will affect application performance. Detailed visibility into the application infrastructure is a must.
#5 Infrastructure visibility in context of application performance: Many application issues occur due to slow network connectivity, a memory leak in the server, virtualization bottlenecks, storage hotspots, etc. So, monitoring the health and availability of the supporting infrastructure is paramount to ensuring application performance success. Infrastructure monitoring should be in context of application monitoring, and ideally be integrated into an APM solution.
To answer the question “Why is the application slow?”, one needs to gain correlated insight into all aspects of user experience, business transactions, application performance and infrastructure health. A converged application and infrastructure monitoring strategy should be adopted to automate root cause diagnosis and simplify performance troubleshooting. From a single pane of glass, you can get your single source of truth and easily triage problems and ensure high performance of applications.
Application performance monitoring can be a breeze when you know how to do it right. Try eG Enterprise APM and experience the power of converged application and infrastructure monitoring incorporating all the aspects of APM discussed above!