0

我在操作级别监视 WCF 的两个性能计数器: - 呼叫持续时间 - 每秒呼叫数

我已经为 perfmon 中的数据计数器日志设置了一个采样间隔。我不确定如何解释这些计数器。

所以假设我们每秒钟采样一次。
来自 MSDN:

Calls Duration:
调用此操作的平均持续时间。平均持续时间根据以下公式计算:(N1-N0)/(D1-D0)。

Calls Per Second:每秒
调用此操作的次数。
此计数器的性能计数器类型为 PERF_COUNTER_COUNTER,其值使用以下公式计算。

(N 1 - N 0 ) / ( (D 1 -D 0 ) / F)

我有这两个性能计数器的日志,持续一个小时。
通话时长的示例日志:

Timestamp              Call Duration
06/25/2012 17:58:52.755 0.05476632
06/25/2012 17:58:53.753 0
06/25/2012 17:58:54.751 0
06/25/2012 17:58:55.765 0
06/25/2012 17:58:56.764 0.058265824
06/25/2012 17:58:57.762 0
06/25/2012 17:58:58.760 0
06/25/2012 17:58:59.758 0
06/25/2012 17:59:00.757 0
06/25/2012 17:59:01.755 0
06/25/2012 17:59:02.753 0
06/25/2012 17:59:03.752 2.90697808


示例日志:每秒调用次数:

Timestamp              Calls per second
06/25/2012 17:48:08.752 1.001692492
06/25/2012 17:48:09.750 0
06/25/2012 17:48:10.764 0.986190617
06/25/2012 17:48:11.762 1.00156982
06/25/2012 17:48:12.761 0
06/25/2012 17:48:13.759 0
06/25/2012 17:48:14.757 0.994411867
06/25/2012 17:48:15.756 0
06/25/2012 17:48:16.754 0

我想从这些数据中回答的是:
“n”个通话中有多少个通话时间超过 2 秒?
更多信息在这里

4

1 回答 1

0

(N1-N0)/(D1-D0)表示(DataFromSample2 - DataFromSample1) / (TimeAtSample2 - TimeAtSample1)

因此,您获得的 Call Duration 和 Calls per second 的值是当前样本和先前样本的平均值,这些计数器无法判断“在“n”个呼叫中,有多少个呼叫花费了 2 秒以上?”。

您可以创建客户计数器价值,请参阅LINK

于 2012-07-26T13:10:24.570 回答