队列的 Webservice wcf 性能计数器

Posted

技术标签:

【中文标题】队列的 Webservice wcf 性能计数器【英文标题】:Webservice wcf performance counters for queue 【发布时间】:2010-02-15 16:45:55 【问题描述】:

我正在尝试对 wcf webservice 进行性能测试,它应该会获得大量流量。哪些性能计数器适合使用以及用于什么目的..自然我正在查看 CPU 和 RAM,但我想知道 IIS 何时排队以及何时遇到问题...

任何关于合理性能计数器的建议都非常感谢......

亚历克斯干杯

【问题讨论】:

【参考方案1】:

MSDN 在WCF administration and diagnostics 上有一个完整的部分,特别是performance counters in WCF。

还有针对性能计数器hosted service calls、endpoint 和operations 的特定部分。

我建议先浏览一下,因为那里有大量有价值的信息。

【讨论】:

【参考方案2】:

分析性能计数器很复杂,需要大量练习,这就是我的说法,我没有足够的经验来给出一个完整的列表。

您将从寻找一些具体的东西开始。 首先当然是返回 web 服务调用需要多长时间。这会告诉您在该负载下是否存在性能问题。 接下来大家看看CPU。然而,这并不能告诉你很多。 RAM 很好,但您想知道应用程序分页到磁盘的频率,因此请检查 Page Faults/sec。 检查您的逻辑和物理磁盘的当前磁盘队列长度。如果您的物理磁盘正在排队,那么您正在对磁盘进行大量读取/写入。

除此之外,您通常会试图找到一个特定且可能难以理解的问题。

我通常分阶段进行性能测试。使用基础知识进行第一次测试,如果特定页面出现问题,请查看它导致的负载。

如果整个生产服务器性能不佳,添加更多硬件会更容易,但我更喜欢查看正在运行的代码并使其变得更好。

【讨论】:

【参考方案3】:

在运行性能监视器之前,您需要添加注册表项:

HKLM/Services/CurrentControlSet/service/
  Add ServiceModelService 4.0.0.0
  under that add Performance then add a DWORD FileMappingFile.
  The size for that will be number of services exposed * 33 * 350.

然后在你的配置中添加

<system.ServiceModel>
  <diagnostics performanceCounters="ServiceOnly"/>
</system.ServiceModel>

您可以查看以下计数器: CPU / RAM(用于内存泄漏)/每个服务呼叫和呼叫持续时间以及未完成呼叫

CPU will show you how heavily your are saturating your server
RAM will show if you have memory leaks if it continues to grow and grow and grow
Calls will show the number of calls you are getting accumulative, 
Calls Per Second will give you the volume you're handling
Calls Outstanding are clients that are waiting because your services could not handle the volume.

如果您在这些分组中发现一些有问题的数字,请开始查看其他元素,例如 Calls Faulted 或 Calls Failed。 (不确定故障和故障之间的区别)

您很少需要深入研究问题,而不是仅提供服务的数字。当您进入其他两组计数器时,您的共享内存利用率会变得非常高。

【讨论】:

以上是关于队列的 Webservice wcf 性能计数器的主要内容,如果未能解决你的问题,请参考以下文章

WCF“服务”性能计数器命名

WCF 操作性能计数器

如何使用性能计数器监控 WCF 服务正常运行时间?

快速入门系列--WCF--06并发限流可靠会话和队列服务

快速入门系列--WCF--06并发限流可靠会话和队列服务

.NET 的 WCF 和 WebService 有啥区别?