7

给定 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/服务器相关类型的监控的最佳方法是什么。

4

2 回答 2

2

你可以试试AlertGrid。看起来这可以解决您的问题。

您可以从应用程序向 AlertGrid 发送各种参数(新帐户名称、执行某些重要逻辑的时间等)。AlertGrid 服务可以对您的数据做一些事情。首先,它可以处理一些使用您发送的参数构建的通知规则(例如,如果做某事的时间> X 秒 -> 向负责人发送短信)。

在两周内,AlertGrid 将拥有一系列新功能。看起来对您来说最重要的是可以绘制从系统接收到的参数。

请注意,AlertGrid 无法从您的系统中检测到参数 - 您需要改为发送它们。这可能看起来像是一项额外的工作,但我们认为它与安装和配置一些专用工具所需的时间相当。另一方面,由于这种方法,AlertGrid 克服了一些限制(它可以与任何可以发送 http 请求的东西集成)。

我相信当您在 AlertGrid 中创建帐户并通过其交互式教程时会更容易理解。

您可能已经注意到,我是AlertGrid团队的开发人员:)

免责声明:在撰写本文时,我们知道 AlertGrid 的价格将在不久的将来降低,所以现在不要看它们,您可以联系我们的支持热线以获取有关定价的更多信息。免费帐户可用,一开始就足够了。

于 2010-08-09T17:50:49.463 回答
0

这里的问题是你真的想从性能监控中学到什么?

  • 你想让你的代码更快吗?然后我建议在测试环境中使用分析工具来找出可以改进代码的地方。

  • 您想找出您的系统可以处理的最大跳动吗?然后我建议在测试环境中执行负载测试。如果您确切地知道在不破坏系统的情况下可以多么努力地推动您的系统,那么您就不需要将监控投入生产。

对于生产,您可能希望最大限度地提高性能。为此,通常会大力推动测试环境并获得可靠的指标,这样您就不需要在生产中放置性能监视器。对于生产,您只想知道何时达到峰值,然后优雅地降级或任何您认为合适的降级。通常,良好的日志记录是监控系统(除了硬件)性能并记录异常性能怪癖的最佳方式。

但是,每个系统都不同,您的里程可能会有所不同。将此作为建议而不是每个人的方式,因为总是有例外情况,您可能必须在生产中运行分析。

于 2010-08-09T15:33:37.983 回答