给定SOA环境中相对典型的.NET 4系统(即Windows Server 2008 R2,IIS 7上的RESTful Web服务,用于NServiceBus消息传递的Windows Services,SQL Server 2008 R2等),什么是最佳实践或事实上的解决方案(无)企业价格标签)以在生产中执行24x7全天候性能监控?
不一定消耗多少CPU/内存/磁盘IO,而是例如每分钟进行了多少createAccount()调用,generateResponse()方法花费并检测例如generateResponseStarted和generateResponseComplete(方法)之间异常增量峰值的平均时间是多少?被调用(依次可以调用第三方),并且可以分别返回响应了。
经过一番谷歌搜索之后,似乎可以选择低级探查器(例如dotTrace)并实现性能计数器,并使用PerfMon或其他某些OpManager类型的产品来使用它们。
你会推荐什么?为实时应用程序实现性能计数器会大大降低生产系统的性能吗?如果没有,是否有任何优秀的库可以简化.NET中的实现?如果是,人们如何监视除memory-disk-cpu之外的应用程序性能?
@Ryan Hayes
谢谢,我正在寻找一种查看生产系统异常减速或峰值的方法。例如,在压力测试过程中一切都很好,但是由于某种原因,我们依赖的3rd Party出现了一些问题,或者由于线程锁定,SAN让路或任何其他意外情况而导致DB的速度下降。低级概要分析是过多的开销,而仅当此时出现问题为时太晚时才打开计数器。另外,我们将缺少历史数据以进行比较(当增量超出可接受阈值时,我将需要某种警报系统)。我想知道人们如何监视其生产系统的性能,以及根据他们的经验,什么是与内存/CPU/服务器无关的最佳监视方式?
最佳答案
您可以尝试AlertGrid。看起来这可以解决您的问题。
您可以从应用程序将各种参数发送到AlertGrid(新帐户名,执行一些重要逻辑的时间等)。 AlertGrid服务可以对您的数据做几件事情。首先,它可以处理使用您已发送的参数构建的某些通知规则(例如,执行重要操作的时间> X秒->将短信发送给负责人)。
在两周之内,AlertGrid将具有许多新功能。对您来说,最重要的似乎是绘制从系统接收到的参数的可能性。
请注意,AlertGrid无法检测到系统中的参数-您需要发送它们。这看起来可能是一项额外的工作,但我们认为这与安装和配置某些专用工具所需的时间相当。另一方面,由于采用了这种方法,AlertGrid克服了一些限制(可以与可以发送http请求的任何内容集成在一起)。
我相信当您在AlertGrid中创建帐户并通过其交互式教程时,它会更容易理解。
您可能已经注意到我是AlertGrid团队的开发人员:)
免责声明:在撰写本文时,我们知道AlertGrid的价格将在不久的将来降低,因此暂时不要关注它们,您可以联系我们的支持热线以获取有关价格的更多信息。免费帐户可用,并且一开始就足够了。
关于.net - 对生产中的.NET应用程序进行持续性能监控?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3441435/