How APM and Load Testing Help Find Bottlenecks in Your Application
Find the cause of poor performance by using the following techniques for APM, aka Application Performance Management.
Join the DZone community and get the full member experience.Join For Free
To find how a system is behaving under certain load conditions, we need an APM (Application Performance Management) tool integrated to find bottlenecks, the cause of poor performance. The most common performance issues are as follows.
Poor scalability — If the software cannot handle the desired number of concurrent users, long load time, an increase in error percentage, or other unexpected behavior, it could affect
- Disk usage
- CPU usage
- Memory leaks
- Operating system limitations
- Poor network configuration
Insufficient hardware resources — Performance testing may reveal physical memory constraints or low-performing CPUs.
Software configuration issues — Often, certain settings are not set at a sufficient level to handle the workload.
Poorly written code — This could refer to inefficient code, memory leaks, or synchronization issues and deadlock due to ineffectual algorithms. You can tackle this issue by ensuring that your developers are using the optimal coding practices, as well as some automated tools such as profilers and code reviews.
Unoptimized Databases —Poor query optimization, when one application function triggers multiple data requests and data transfers, or a DB may take too long to return results due to poor indexing.
Third-Party Services —Make sure third-party services used by the application do not impact performance.
New Relic provides a powerful ability to analyze errors. With New Relic agents, you can see the error stack trace, message, and the line of code from which the error was thrown. We can also slice and dice the errors discovered in their applications over time and save hours of manual analysis by using NRAI to instantly identify what’s different about their error transactions.
Some exclusive features of New Relic APM:
- Application Monitoring: Application Monitoring allows you to see your application performance trends at a glance – from page load times, to error rates, slow transactions, and a list of servers running the app in one place.
- Response Time, Throughput, and Error Rates – Response time is an average of the total time spent across all web transactions occurring within a selected time frame on the server-side. Throughput is requests per minute through the application. Error rates measure the percentage of errors over a set time period for your application.
- Application Histograms & Percentiles – This shows you the distribution of response times for all of your transactions. It will provide you the kind of actionable data you need to quickly pinpoint and troubleshoot problems.
- Most Time-Consuming Transactions – This list of most time-consuming web transactions provides aggregated details around the surfaced slow transactions occurring during a specified time.
- Performance of External Services – The external services’ dashboard provides charts with your top five external services by response time and external calls per minute. Such as web services, resources in the cloud, and any other network calls.
- Thread Profile – Stack traces are collected over a specified duration, aggregated and displayed in a detailed call tree for fine-grained diagnosis. This makes performance monitoring at its easiest.
- Cross Application Tracing – Provides you end-to-end visibility and automatically maps each tier of highly distributed and service-oriented apps in our Application Topology Map to easily visualize the relationship between tiers.
- Transaction Breakdown – Receive performance details of each segment including % time, average calls per transaction, and average time.
- Database Monitoring: Database monitoring provides a detailed overview of your database performance - pointing out critical errors that are slowing down your application.
- Time spent– The database overview provides a stack ranking of the most time-consuming database calls along with aggregated metrics around response times and throughput and slow SQL traces.
- SQL Query Analysis– Track the exact SQL statements that are slowing down your site. Get samples of the worst performing SQL and stack traces to understand exactly where the SQL is used in your code, and how to fix it.
- Slow SQL Report– Slow SQL samples are examples of the worst performing SQL on your site. Along with the SQL, New Relic collects the context and diagnostic information you need to fix your database performance issues.
- Database/cache operations– 'All Operations Table’ that is designed to show every operation for all databases and caches for the app within the selected time window.
- Availability & Error Monitoring
- Alert Policies– Alert policies allow you to set thresholds for groups of applications with similar alerting needs.
- Availability Monitoring– New Relic uses an external pinger to verify your users can reach your application site, by making requests to them regularly, recording errors, and sending downtime alerts when an application is down.
- Reports: Create and receive customized reports that are just as easy to read as they are to share. Our detailed reports include everything from deployments and availability to performance and customized dashboards.
Performance testing and APM monitoring go hand in hand to find the root cause of bottlenecks quickly and efficiently.
- Test your application performance much before it goes live.
- Test the application under various load scenarios.
- Test with realistic scenarios by adding think time, pacing, etc.
Opinions expressed by DZone contributors are their own.