Given the relatively typical .NET 4 system in an SOA environment (such as Windows Server 2008 R2, RESTful Web Services on IIS 7, NServiceBus Windows Messaging Services, SQL Server 2008 R2, etc.), what are the best practices or de facto solutions (without branded price) for performing 24x7 performance control in production?
It is not necessary how much CPU / Memory / Disk IO it consumes, but rather, for example, how many calls to createAccount () per minute were completed, what is the average generation time of the Response () method, it receives and detects unusual delta peaks between, for example, generateResponseStarted and generateResponseComplete ( the method has been called (which, in turn, may cause a third party), and the response is ready to return accordingly).
After some search queries, it seems that the parameters are intended for low-level profilers (for example, dotTrace) and implement performance counters and consume them using PerfMon or another product such as OpManager.
What would you recommend? Will the implementation of performance counters for a real application significantly degrade performance on a production system? If not, are there any good libraries that simplify implementation in .NET? If so, how do people control the performance of their applications other than memory-disk-processor?
@Ryan Hayes
Thank you, I'm looking for a way to see unusual slowdowns or surges on production systems. For example, everything was fine during stress testing, but for some reason the third party we rely on has some problems or the DB slows down due to thread blocking, or the SAN gives way, or any other unexpected scenarios. Low-level profiling is too much of the overhead when turning counters only when there is a problem, too late at this point. Plus, we will skip historical data to compare it with (I need some kind of warning system when the delta is outside the acceptable threshold). I wonder how people control the performance of their production systems in their own experience, what would be the best monitoring approach that is not related to memory / processor / server.
Ilya Kozhevnikov
source share