给定 SOA 环境中相对典型的 .NET 4 系统(即 Windows Server 2008 R2、IIS 7 上的 RESTful Web 服务、用于 NServiceBus 消息传递的 Windows 服务、SQL Server 2008 R2 等),最佳实践或事实上的解决方案是什么(没有企业价格标签)用于在生产中执行 24x7 性能监控?
不一定要消耗多少 CPU/内存/磁盘 IO,而是例如每分钟进行了多少 createAccount() 调用,generateResponse() 方法花费的平均时间是多少,并检测例如 generateResponseStarted 和 generateResponseComplete 之间的异常增量峰值(方法被调用(反过来可以调用第 3 方)并且响应已准备好分别返回)。
经过一番谷歌搜索后,似乎选项适用于低级分析器(如 dotTrace)并实现性能计数器并使用 PerfMon 或其他一些 OpManager 类型的产品使用这些计数器。
你会推荐什么?为实时应用程序实施性能计数器会显着降低生产系统的性能吗?如果没有,是否有任何好的库可以简化 .NET 中的实现?如果是,除了内存-磁盘-cpu 之外,人们如何监控他们的应用程序的性能?
@瑞安海耶斯
谢谢,我正在寻找一种方法来查看生产系统异常减速或峰值。例如,在压力测试期间一切都很好,但由于某种原因,我们依赖的第 3 方出现了一些问题,或者数据库由于线程锁定而变慢,或者 SAN 正在让路,或者任何其他意外情况。低级分析的开销太大,而仅在出现问题时才打开计数器为时已晚。另外,我们将丢失历史数据以进行比较(当增量超出可接受的阈值时,我需要某种警报系统)。我想知道人们如何监控生产系统的性能,以及根据他们的经验,非内存/cpu/服务器相关类型的监控的最佳方法是什么。