Summary
Performance issues affect the user experience by decreasing service availability. Distributed tracing and common metrics allow you to narrow down the problem to a specific service, instance, API, or another combination of factors. When it’s not enough, you could increase resolution by adding more spans, but at some point, the performance impact and cost of the solution would become unreasonable.
.NET runtime metrics provide insights into CLR, ASP.NET Core, Kestrel, and other components. Such metrics can be collected with OpenTelemetry, dotnet-counters
, or dotnet-monitor
. It could be enough to root cause an issue, or just provide input on how to continue the investigation. The next step could be capturing process dumps and analyzing memory or threads’ call stacks, which can be achieved with dotnet-dump
.
For problems specific to certain scenarios, performance traces provide details so that we can see what happens in the application or under the hood in third...