繁体   English   中英

自定义时间段内的效果计数器

[英]Performance counters over custom period of time

我需要能够在特定的自定义时间段内收集一些性能计数器。 我对ServiceModelService的一些性能计数器特别感兴趣:“调用”和“失败的调用”,尽管该问题适用于我相信的任何一个。

WCF开箱即用地提供自服务启动以来的总数的“呼叫”和“每秒呼叫”; “失败的呼叫”,“每秒失败的呼叫”相同。 我需要的是能够在自定义时间段内创建此名称,例如“每分钟通话数”或“每小时通话数”。

我还没有发现任何开箱即用的方法。 我想我可以创建自己的性能计数器收集器,该收集器将每X的时间进行一次计算; 我的应用程序在Azure云服务中运行,因此我认为可以在启动任务中安装的单独exe中执行此操作,也可以在启动Web角色时在单独的线程中完成此操作。

我在自己的特定问题中表达了该问题,但我认为该问题适用于任何情况:如何在特定的自定义时间段内捕获性能计数器。

任何帮助将不胜感激! 谢谢!

事实证明,“每秒呼叫数”和“每秒失败呼叫数”性能计数器名称有点误导...它们的默认采样率是1s,但是它们能够以您需要的任何采样间隔率工作。 例如,如果您想知道五秒钟内发生的呼叫数量,可以编写如下代码:

// load performance counter
var numOfCalls = new PerformanceCounter(...);

// read initial value for the period
numOfCalls.NextValue();

// wait desired period
Thread.Sleep(5000);

// read final value, the counter will internally calculate it based on the two samples
numOfCalls.NextValue();

如果您使用的是perfmon,则可以更改采样率。 如果您使用的是代码,则可以通过间隔NextValue调用自己设置采样率。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM