Today at Stackify, we’re very proud to announce the launch of our new product, Retrace APM+.
This first release specifically targets ASP.NET, but as the platform continues to grow, support will be added for other popular programming languages. More details will be announced later this year.
Stackify Retrace builds on top of the great foundation of our current offering, known for great real-time application and server monitoring coupled with Error & Log management. Now, with this new addition, we can give ASP.NET developers the code-level insights they need to take their application performance to the next level.
What is Stackify Retrace?
In a nutshell, Stackify Retrace adds method-level code profiling of ASP.NET applications. For each request to your web app, we collect a lightweight call stack trace, that gives insight into:
- Slow and low user satisfaction web requests
- The “Hot path” in your code and how to improve performance
- SQL Query performance and stats
- External web request performance
- Redis cache usage
Additionally, Stackify Retrace APM+ has a couple of features that are industry firsts:
- Support for async / await patterns, including async MVC controller methods
- Integrated inline Log & Error data in the stack traces – see your contextual log data alongside the captured call stack
All standard ASP.NET frameworks are supported.
- WebForms 2.0+
- MVC v3+
- WEB API
These new capabilities are integrated in to the existing application dashboard that our users have come to love which already combines server monitoring, app metrics, errors, and logs. Just click on the new tab labeled “Performance (APM+)” on the app dashboard for your app. From this view, you can quickly see:
- Where your code is spending most of it’s time, i.e. in the database, waiting on an external request, queueing, etc.
- What your most expensive queries or web service calls are, how often they are called, and how long they take.
Drilling down into any request, you see more specific details such as the call stack, how many database connections / queries are made per request. You can even look at a unique query, see what pages call that query, and any performance differences between those pages.
Do you have a key transaction that needs to perform within certain limits? Of course we give you the ability to monitor these things!
For any profiled URL, you can set up Stackify monitors for:
- Requests per minute
- Satisfaction score
- HTTP error rate
- Average response time
And for SQL queries:
- Average query time
- Queries per minute
This is all just the tip of the iceberg. We look forward to watching you dig into all of this great data and gain new insights into how your apps are performing. In the next few months more great features to Stackify Retrace APM+ will be released..
To read more on using Stackify Retrace APM+, check out our docs here:
Enabling and installing Retrace APM+
“Profiling? How’s it work…..?”
The .NET CLR (Common Language Runtime) exposes an API that, if subscribed to, allows a registered profiler to get callback events as the CLR executes your code. This exposes the internals of the CLR to the profiler and allows for inspection of code to occur at runtime, almost as if debugging the code. In fact, .NET debuggers all use this same API. For Stackify APM+, we’ve implemented our profiler using this API as well.
“But…. is it safe to run? Profiling adds overhead!”
Back to the question….. will it add overhead? That’s a great question, which is addressed in this article: Is Stackify APM Safe for Production Servers
Many .NET developers are familiar with traditional profiling tools, such as ANTS (which is a great tool!), but know that it should never be used on a production system or anywhere that performance is critical. This is because traditional profilers will profile everything, all of the time, on all threads. As it does this, it’s crunching a lot of data and statistics about memory and CPU usage.
Stackify Retrace APM is built to be lightweight and not cause performance issues, even if running on high-volume, production servers. We only profile threads serving a web request and we really limit what we profile to important events in the page lifecycle, and items known to directly impact overall performance (such as SQL,web service requests, etc).
We feel confident that most clients should be able to run this on critical systems, but do make sure you aren’t enabling on an already resource-constrained system.
In fact, we have been running Stackify Retrace APM on our own production servers for about the last 6 months. Most of these servers receive 20-30 requests / sec (our WCF services alone get 22 million requests / day), and we generally observe:
- a ~2-5% increase in CPU and Memory utilization
- A couple milliseconds of additional processing time per request.
We believe that negligible performance impact is well worth the insights that Stackify APM+ delivers; we’ve used it ourselves to improve performance in a lot of areas of our web app and services.
“How do I get it?”
The short answer is that if you are using Stackify, it’s already available, if you are running Stackify v.1.4.200 (or higher) Windows agents on Windows Server 2008 or above. With the latest release (at the time of this writing, v1.4.209), there are options in the installer to turn it on; if Stackify’s agent is already installed, you can enable the feature from the server dashboard in Stackify. It’s worth noting that enabling APM+ requires an IIS restart. For more details, see these support docs.
If you are you not using Stackify yet, give it a try and sign up for a free trial
Everyone on the Stackify team is excited to hear the feedback from all of our current, new, and soon to be clients on this great new set of functionality. Stackify APM+ is the first application performance monitoring solution to combine code-level insights, error and log management, and server metrics into one consolidated platform to provide the best overall picture of your application heatlh, and is the best way to monitor for ASP.NET performance issues.
Let us know what you think!