我们希望收集有关我们(例如80%WinApp)应用程序的性能数据,包括开发人员内部以及客户站点.我们的目标如下:
理想情况下,它还可以在站点范围或逐个用户的基础上进行相对配置,以控制:
我们一直在计划基本上编写自己的系统来完成大部分工作.然后,我们将看到许多不同的"持久性"模型,包括"性能数据包"的二进制格式化,XmlSerialization和已经是.NET框架一部分的跟踪日志记录功能,仅举几例.
在参与此之前,我想仔细检查一下"人群"的建议.我已经描述了我们要做的事情,基本上是我们当前的行动计划 - 但我正在寻找有关如何最好地解决手头问题的任何和所有建议.
提前致谢.
War*_*mak 17
看看Metrics.NET,这是一个相对较新的项目,应该涵盖大部分这些需求.它是Java的"指标"项目的一个端口.
(2016年3月添加:)经过长时间的无更新后,Metrics.NET项目已转移给新用户.
你可以看看在StatsD之上构建一些东西:
https://github.com/etsy/statsd/
有一个.NET包可以在这里找到:
https://github.com/robbihun/NStatsD.Client
它很轻巧,因为它基本上只是将UDP数据包发送到远程服务器.然后,该远程服务器将其聚合并将其存储在Graphite中,Graphite擅长获取这些数据并将其转换为图形,并为您管理数据保留等内容.对于分析,Graphite还允许您将数据输出为JSON(基本上将您的指标转换为双精度数组),并且具有许多功能和过滤器,您可以将这些功能和过滤器应用于记录的指标,然后您可以将这些指标提供给其他系统.
有关Graphite可能实现的一些示例,请参见此处:
http://matt.aimonetti.net/posts/2013/06/26/practical-guide-to-graphite-monitoring
但它并不能满足您的所有要求,例如能够记录有关客户端的数据,如计算机名称.但是,您可以通过在指标名称中使用命名空间来实现该目标; 因此,您将使用"client567.orders.loadtime"等密钥记录您的指标,而"client567"将是存储该客户端567在Windows 7上使用IE11的其他数据库中的条目.
所以它不是一个完整的开箱即用的解决方案,但它构成了我认为的一个很好的基础.
另一种选择是使用NewRelic等商业平台:
它为许多技术(从ASP.NET到SQL Server到Solr)提供性能监控.但是,它确实需要在后台运行代理进程(Windows上的服务)来处理对您的监视,这可能是也可能不是您的选项.它或多或少适用于Web服务器,可能不太适合监视客户端WPF应用程序.
按照你的计划我采取这种方法:
您可能还想考虑编写自己的锁类.而不是使用lock(blah)
或者Monitor.Enter(blah)
在您自己的一次性类中包装Monitor.Enter/Exit,记录您必须等待多长时间才能进入锁定状态.
归档时间: |
|
查看次数: |
19153 次 |
最近记录: |